二分三分

Posted 648-233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分三分相关的知识,希望对你有一定的参考价值。

这一部分还是二分好用(因为二分好写

三分在求非单调函数极值有大用

二分主要思路就是每次将当前区间分为两部分,当前接肯定在中点,左区间与右区间之中,那么把不合理的区间抛弃,就可以极快地求出解

例题:

愤怒的牛(很像跳石头)

农夫 John 建造了一座很长的畜栏,它包括N (2 ≤ N ≤ 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 ≤ xi ≤ 1,000,000,000). 但是,John的C (2 ≤ C ≤ N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发生争斗。为了不让牛互相伤害。John决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是什么呢

二分答案,看当前答案是否合法即可

代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[100020],m,f;
inline int ok(const int &p)
    int z=0,s=0;
    for(int i=1;i<n;i++)
        if(a[i]-a[z]>=p)
            s++;
            z=i;
        
        if(s>=m-1)
            return 1;
    
        return 0;

int main()

    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    sort(a,a+n);
    int l=0,r=a[n-1]-a[0],k,ans=0;
    while(l<=r)
        k=(l+r)/2;
        if(ok(k))
            l=k+1;
            ans=k;
        
        else
            r=k-1;
    
    printf("%d\n",ans);
    return 0;

 

以上是关于二分三分的主要内容,如果未能解决你的问题,请参考以下文章

二分与三分

二分?三分!

算法竞赛专题解析:二分法三分法

二分与三分

二分与三分

二分与三分(精度类型)