关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事(二)

简介: 关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事(二)

C(二分答案)

C - NYOJ

mid越大,操作次数越少。

求操作次数,用向上取整,(判断a[i]-mid是否大于0,)

scanf,printf防超时

l,r设置,r可以略大,l可以略小(>0)

模拟时注意有哪些限制条件,列出来以正确设置变量

#include <iostream>
#include <cmath>
using namespace std;
int n,d;
#define int long long
typedef long long ll;
const int N = 1e5 + 10;
int a[N],k,maxn;
int res;
bool check(int mid){
    ll cnt = 0;
    for(int i = 0;i < n;i++){
        {//模拟中存在什么限制条件。
        if(a[i] - mid > 0)
           d = a[i] - mid;
        else d = 0;
        cnt += (d + k - 1 -1) / (k - 1);\//分子+分母-1/分母
        }//if(a[i]-mid>0) cnt+=(int)ceil(double(a[i]-mid)/(k-1));
        //int宏定义成long long了
    }
//    cout << "cnt = " << cnt << endl;
    if(cnt <= mid) return true;
    else return false;
}
signed main(){
    while(cin >> n){
        maxn = 0;
        for(int i = 0;i < n;i++){
            scanf("%lld",&a[i]);
            maxn = max(a[i],maxn);
        }
//    if(sum == n * a[0]) {cout << a[0] << endl; return 0;}
        cin >> k;
        if(k == 1 ){cout << maxn << endl; continue;}
        ll l = 1, r= maxn+1;
        while(l < r){
            ll mid = (l + r) >> 1;
            if(check(mid)) r = mid,res = mid;
            else l = mid + 1;
//           cout << "mid =" << mid << "l = " << l << "r=" << r << endl;
        }
    cout << res << endl;
    }   
    return 0;
}

D(贪心

D - NYOJmm

目前做的贪心思想普遍简单,不要想得太复杂

#include <iostream>
#include <algorithm>
typedef long long ll;
using namespace std;
const int N = 1e5;
struct cow{
    ll strength,weight;
}a[N];
bool cmp(cow a,cow b){
    return a.strength+a.weight > b.strength+ b.weight;
}
int main(){
    int n;
    ll cnt = 0;
    cin >> n;
    for(int i = 0;i < n;i++){
        cin >> a[i].weight >> a[i].strength;
        cnt += a[i].weight;
    }
    sort(a,a+n,cmp);
    ll maxn = -999999999999;
    for(int i = 0;i < n;i++){
        cnt -= a[i].weight;
        maxn = max(maxn,cnt - a[i].strength);
    }
    cout << maxn ;
    return 0;
}

总结

做的好:很快想出了大体思路

做的不好:细节几乎完全没有注意

花费了大量时间死磕。

反思:

1、卡题时直接判错,去模仿题解纠正

2、要学会找题解

3、哪怕摆烂几天都无所谓,但反思中的内容要严格执行

目录
相关文章
|
15天前
蓝桥杯省赛冲刺(1 补充)考试流程 做题技巧 手算题 杂题
蓝桥杯省赛冲刺(1 补充)考试流程 做题技巧 手算题 杂题
7 0
|
6月前
|
Linux C语言 C++
秋招跨专业上岸,这五个C++项目可以增加99%(可以写进简历)(下)
秋招跨专业上岸,这五个C++项目可以增加99%(可以写进简历)(下)
|
6月前
|
存储 应用服务中间件 API
秋招跨专业上岸,这五个C++项目可以增加99%(可以写进简历)(上)
秋招跨专业上岸,这五个C++项目可以增加99%(可以写进简历)
关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事
关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事
47 0
关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事(三)
关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事(三)
42 0
|
算法
每日一题冲刺大厂提高组 第二十四天 跑路
大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题为了让大家练到各种各样的题目,熟悉各种题型,一年以后,蜕变成为一个不一样的自己!
86 0
|
机器学习/深度学习 算法
每日一题冲刺大厂第十一天提高组 归零
大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题提高组是为了有余力的同学准备的,让大家练到各种各样的题目,一年以后,蜕变成为一个不一样的自己!
104 0
|
机器学习/深度学习 人工智能 测试技术
记录一些错题(跑路人笔记)
记录一些错题(跑路人笔记)
记录一些错题(跑路人笔记)
测试点杂记,总有一点是你忘记的
在测试领域中,测试点,测试方法,比比皆是,工作刚入门的时候,总会去了解学习这些内容,工作时间长了,有些就忽略了,不知道有些测试点或者测试细则规范等,你是否需要重新温习一下,而知新呢?