题解 | #[USACO 2016 Jan S]Angry Cows#

[USACO 2016 Jan S]Angry Cows

https://ac.nowcoder.com/acm/problem/24017

寻找R的最小值,同样可以使用二分验证的方式去做,那么问题就落到了如果验证当前的R可以将草堆全部引爆。
如何验证:从左向右去炸第一问即可,在其中维护一个当前爆炸的最大坐标从而来判断当前这个草堆是不是需要去炸的第一个就可以了。
//寻找R的最小值,同样可以使用二分验证的方式去做,那么问题就落到了如果验证当前的R可以将草堆全部引爆。
#include <bits/stdc++.h>

using namespace std;
const int maxn = 50000+10;
int N, K;//N干草的数量,K奶牛的数量
int hay[maxn];

bool yanz(int k)
{
    int cao = K;
    int j = 0;
    int total = k*2;
    for (int i=0;i<N;i++) {
        if (hay[i]>j) {
            cao--;
            j = total+hay[i];
        };
    }
    if (cao>=0) return true;
    else return false;
}

int main() {
    int k;
    cin>>N>>K;
    for (int i=0;i<N;i++) {
        scanf("%d", &hay[i]);
    }
    sort(hay, hay+N);
    int l = 1, r = hay[N-1];
    //二分答案
    while (l<r) {
        int mid = (l+r)/2;
        if (yanz(mid)) r = mid;
        else l = mid+1;
    }
//     cout<<yanz(5)<<endl;
    cout<<l<<endl;
    return 0;
}


全部评论

相关推荐

不愿透露姓名的神秘牛友
07-15 17:46
暑期就挂了,秋招还有机会吗
大聪明777:研发提前批,14号刚开的,官网上面的配图上有写。提前批没过的话,秋招还可以投,不过前面的笔试/面试记录会被保留,供秋招参考
26届校招投递进展
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
07-11 11:10
门头沟学院 Java
请问各位大三兄弟们跟hr说多久实习时间到时候可以提前跑路吗?
程序员小白条:问就是六个月以上,可以一年,实习都这样,你入职后想跑就跑
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务