1.https://www.luogu.com.cn/problem/P2249
用lower_bound最好,二分答案找到大于等于它的最小数
2.https://www.luogu.com.cn/problem/P1824
https://www.luogu.com.cn/problem/P2678
双倍经验题,答案具有明显单调性,二分答案,然后判断是否有满足距离个数的限制条件。
二分模板
下面是两个模板
在递增序列a中查找>=x中的数最小的一个的下标
while(l < r){
int mid = (l + r) >> 1;
if(a[mid] >= x){
r = mid;
}
else
l = mid + 1;
}
在递增序列a中查找<=x中的数最大的一个的下标
while(l < r){
int mid = (l + r + 1) >> 1;
if(a[mid] <= x){
l = mid;
}
else
r = mid - 1;
}
最后都返回l
实数域的二分
while(l + 1e-5 < r ){
if(clac(mid))r = mid;
else l = mid
}
或者规定有限的二分次数,
标签:二分,www,答案,luogu,mid,https,cn
From: https://www.cnblogs.com/wmjlzw1314/p/16867721.html