本文共 654 字,大约阅读时间需要 2 分钟。
二分法模板
二分的核心思想是解决边界问题。对于整数的边界,我们通常会在计算时加一再减一,这样可以避免直接取到边界值导致的死循环问题。不过,对于浮点数来说,这种处理就不需要,因为直接除以2已经可以得到中间值了。
整数二分法
整数二分法通常分为三个部分:判定函数、查找函数以及主函数。
定义判定函数bool judge(int mid) {int a = ...;if (满足题意条件) {return true;} else {return false;}}
主函数int solve1() {int l, r, mid;// 根据题目定义初始值while (条件不满足) {mid = (l + r) / 2;if (judge(mid)) {l = mid + 1;} else {r = mid;}}}
浮点数二分法
双变量solve1() {double l, r, mid;// 根据题目定义初始值while (r - l > eps) {mid = (l + r) / 2;if (judge(mid)) {l = mid + eps;} else {r = mid - eps;}}return r;}
双变量solve2() {double l, r, mid;// 根据题目定义初始值while (r - l > eps) {mid = (l + r) / 2;if (judge(mid)) {r = mid - eps;} else {l = mid + eps;}}return r;}
转载地址:http://rtagz.baihongyu.com/