二分算法模板
整数二分
1 /**\ 2 check()函数用来检查是否具有某种性质 3 r = mid 适用于答案往左逼近的情况 4 l = mid 适用于区间答案往右逼近的情况(例如最小最大值) 5 \**/ 6 int bs1(int l, int r) 7 { 8 while (l < r) 9 { 10 int mid = l + r >> 1; 11 if (check(mid)) r = mid; 12 else l = mid + 1; 13 } 14 return l; 15 } 16 17 int bs2(int l, int r) 18 { 19 while (l < r) 20 { 21 int mid = l + r + 1 >> 1; 22 if (check(mid)) l = mid; 23 else r = mid - 1; 24 } 25 return l; 26 } 27 28 29 double bs_3(double l, double r) 30 { 31 const double eps = 1e-6; // eps 表示精度,取决于题目对精度的要求 32 while (r - l > eps) 33 { 34 double mid = (l + r) / 2; 35 if (check(mid)) r = mid; 36 else l = mid; 37 } 38 return l; 39 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】