「学习笔记」分治
二分#
常见的二分一般有两种:二分查找和二分答案
二分查找一般是在一个有序数组内使用二分查找元素,当然也可以直接用 STL
中的 lower_bound
和 upper_bound
来做。有一些数据结构可以较快的二分查找,比如线段树、平衡树。
二分答案是指对于一道题,它的答案具有某种单调性,在直接求答案不好求的时候,我们可以对答案进行二分,变为判定性问题。
一般模板
while (l <= r) {
int mid = (l + r) >> 1;
if (check(mid)) {
ans = mid;
l = mid + 1;
}
else {
r = mid - 1;
}
}
while (l <= r) {
int mid = (l + r) >> 1;
if (check(mid)) {
ans = mid;
r = mid - 1;
}
else {
l = mid + 1;
}
}
三分#
如果需要求出单峰函数的极值点,通常使用二分法衍生出的三分法求单峰函数的极值点。
下面是一种写法
db l = 0, r = 1000.0, ans = 0;
while (r - l >= eps) {
db len = (r - l) / 3;
db fl = f(l + len), fr = f(r - len);
if (fl > fr) {
l = l + len;
ans = l;
} else {
r = r - len;
ans = r;
}
}
作者:yifan0305
出处:https://www.cnblogs.com/yifan0305/p/17157804.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
转载时还请标明出处哟!
朝气蓬勃 后生可畏
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效