バイナリテンプレート
- アルゴリズムのアイデア:閉区間に目標値を仮定し
[l, r]
、各時間間隔の長さが半分に低減される[l, r]
対象を検索するために、すなわち、時間。
テンプレート
間隔に[l, mid]
して[mid + 1, r]
、それが操作を更新しているl = mid + 1
かr = mid
、計算1ミッドなし。
while (l < r) {
int mid = l + r >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
return l;
}
テンプレート2
間隔[l, mid - 1]
と[mid, r]
、それは更新があるとき、r = mid - 1
またはl = mid
途中の計算時に1追加します。
while (l < r) {
int mid = l + r + 1>> 1;
if (check(mid)) l = mid;
else r = mid - 1;
return l;
}