问题标题: 酷町堂:4559 好斗的鸡

0
0
已解决
李显晨
李显晨
中级启示者
中级启示者

传送门

不会,求思路

李显晨在2021-02-04 11:42:28追加了内容

@张帆 

李显晨在2021-02-04 11:52:03追加了内容

ding

李显晨在2021-02-04 12:02:28追加了内容

ding


0
已采纳
张帆
张帆
中级天翼
中级天翼

这题我不是用贪心,用的是二分,

 

二分答案,然后判断能否实现:

 

判断函数如下:

int Rearch(long long mid){
    long long last=1,cnt=1;
    for(int i=2;i<=n;i++){
        if(a[i]-a[last]>=mid){
            last=i;
            cnt++;
            if(cnt>=c) return true;
        }
    }
    return false;
}

 

0
汪恺恒
汪恺恒
中级启示者
中级启示者

这题用二分

主函数核心

    输入n,m,a数组
    排序,从小到大
    for(int i=2;i<=n;i++){
        l=min(l,a[i]-a[i-1]);
    }
    int r=a[n]-a[1];
    当(l<r){
        int mid=(l+r+1)/2;
        if(!check(mid)){
            r=mid-1;
        }
        else{
            l=mid;
        }
    }
    输出l;

这题的贪心思路就是二分,暴力枚举可能会超时

0
黄依成
黄依成
中级天翼
中级天翼

这道题其实可以不用二分的,数据比较小。

但2791好斗的牛数据大,只能用二分,其实这两题一样的 。

贪心就可以了

0
我要回答