什么是二分答案呢?
这样的题从题目中可以发掘出我们要求得的答案的范围,知道答案的左边界和右边界,然后就可以套用二分法的模板了。
二分答案类的题呢,有两个标志性的词语:最小值最大化和最大值最小化。
最小值最大化类:
先看一道例题:
题目要求输出的是相邻两头牛最大的最近距离,就是每种情况的最小值里面最大的那一个,就是二分答案里面的最小值最大化的问题。AC代码如下
#include <iostream>
#include<algorithm>
#include<cmath>
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
long long int a[500009],b[500009];
long long int c,n,i,j;
bool check(int k){
int ans=1,now=1;
for(j=2;j<=n;j++){
if(a[j]-a[now]>=k){
ans++;
now=j;
}
}
return ans>=c;
}
int main(){
IOS;
cin>>n>>c;
for(i=1;i<=n;i++){
cin>>a[i];