二分--做题
二分算法
while(le < ri) {
mid = le + (ri-le)>>1; // 防止溢出
if(check(mid) ) ri = mid; // 一直到左
else le = mid + 1;
}
做题:
【深基13.例1】查找
A-B 数对
[COCI 2011/2012 #5] EKO / 砍树
烦恼的高考志愿
做题思路与总结:
【深基13.例1】查找
二分模板题,注意输入 1e6 cin可能会超时
A-B 数对
1,用map映射,将输入的map++,之后输入值减去C。最后遍历一遍,将map输入的值累加。
2,排序,用lower_bound 和 upper_bound() -- 太奇妙了这算法
[COCI 2011/2012 #5] EKO / 砍树
也是二分,不过这一题真的很特殊,mid不是输入值的下标或是输入值,而是自定义的,整个很像二分模板。如果能想到自定义,这一题就是模板了。
先找最大值,之后le--0, ri-- max值,mid,遍历。主要是check函数,遍历砍了多少米树木,返回。
烦恼的高考志愿
先排序,后二分模板,找当前的和更靠前的一个数组,求相减绝对值的最小值。需要特判在第一个数组上
总结
二分算法,我很早之前都学过了,后来在刷题过程中发现自己做的题太少了,每一道题都做好久,所以现在开始在洛谷上刷刷模拟题,学学算法和精进一下语言。
二分思路很简单,模板代码也少,但是感觉很是灵活,在做题时要根据题意合理去找边界,去找check函数。
变化多端的check函数。
浙公网安备 33010602011771号