这个模板是我在某谷上看到的。觉得写得挺有通用性得,就嫖过来的。
//整数二分答案
while(left <= right)
{
int mid = (left + right) / 2;
if(judge(mid))
{
left = mid + 1;
ans = max(ans, mid);
}
else
right = mid - 1;
}
printf("%d", ans);
//整数三分模板 ll res = max(f(l), f(r)); while (l <= r) { int m = (l + r) >> 1, mm = (m + r) >> 1; ll fm = f(m), fmm = f(mm); if (fm >= fmm) l = m + 1; else r = mm - 1; res = min(res, min(fm, fmm)); } cout << res << endl;