二分答案

1|0二分答案

1|1使用条件(最大的最小,最小的最大)

  1. 命题可以被归纳为找到使得某命题P(x)成立(或不成立)的最大(或最小)的x

  2. P(x)看作一个值为真或假的函数,那么它一定在某个分界线的一侧全为真,另一侧全为假。

  3. 可以找到一个复杂度优秀的算法来检验P(x)的真假。

1|2好理解的板子

1|0整数二分

int Find(int L, int R) { int ans, mid; while (L <= R) { int mid = L + ((R - L) >> 1); if (check(mid)) { ans = mid; R = mid - 1;//L = mid + 1; } else { L = mid + 1//R = mid - 1; } } return ans; }

1|0小数二分

#define eps 1e-6 while(rbound-lbound>eps){ double mid=(l+r)/2; if(check(mid)){ l=mid; }else{ r=mid; } }

1|3好题

1|0P1024 NOIP2001 提高组 一元三次方程求解

1|0(浮点数的二分)

while(l <= r) { db mid = (l + r) / 2; if (check(mid) * check(r) <= 0) { l = mid; } else { r = mid; } }

错!因为浮点数存在误差。不能直接比较是否相等,而是判断差值是否小于eps

#define eps 1e-4 while(r - l >= eps) { db mid = (l + r) / 2; if (check(mid) * check(r) <= 0) { l = mid; } else { r = mid; } }

正确

1|0P2678 跳石头

1|0巧妙地从题目中转化check条件

1|0P1182 数列分段

1|0对左右区间的特别处理


__EOF__

本文作者Kdlyh
本文链接https://www.cnblogs.com/kdlyh/p/17787816.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   加固文明幻景  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示