二分--做题

二分算法

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函数。

posted @ 2022-08-06 23:01  golemon  阅读(46)  评论(0)    收藏  举报