重启——二分
- 游戏开发
- 2025-08-21 15:15:02

整数二分 while (m -- ) { int x; scanf("%d", &x); int l = 0, r = n - 1; while (l < r)//模板一 { int mid = l + r >> 1; if (q[mid] >= x) r = mid; else l = mid + 1; } if (q[l] != x) cout << "-1 -1" << endl; else { cout << l << ' '; int l = 0, r = n - 1; while (l < r)//模板二 { int mid = l + r + 1 >> 1; if (q[mid] <= x) l = mid; else r = mid - 1; } cout << l << endl; } } 浮点数二分 while(r-l>1e-6) //-几比结果需要的精度多两位,如保留4位,则r-l>1e-6 { double mid = l+r >>1; if(mid*mid>=x) r=mid; else l = mid; } 原理:区间长度极小时可视为一个数字