plantilla binaria
- idea Algoritmo: Supongamos que un valor objetivo en un intervalo cerrado
[l, r]
, cada intervalo de tiempo de longitud se reduce a la mitad, cuando[l, r]
el tiempo, es decir, para encontrar el objetivo.
Una plantilla
El intervalo en [l, mid]
y [mid + 1, r]
operación cuando se está actualizando l = mid + 1
o r = mid
, sin cálculo 1 mediados.
while (l < r) {
int mid = l + r >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
return l;
}
plantilla de dos
El intervalo en [l, mid - 1]
y [mid, r]
cuando está al día r = mid - 1
o l = mid
añadir 1 al calcular mitad.
while (l < r) {
int mid = l + r + 1>> 1;
if (check(mid)) l = mid;
else r = mid - 1;
return l;
}