Permíteme contarte un truco que se usa con mucha frecuencia en los Concursos de codificación competitiva que generalmente implica una búsqueda binaria modificada. La declaración del problema es la siguiente:
POLVO MÁGICO
La primera línea contiene dos enteros positivos n y k : la cantidad de ingredientes y la cantidad de gramos del polvo mágico.
La segunda línea contiene la secuencia a 1, a 2, …, donde el i -ésimo número es igual a la cantidad de gramos del i -ésimo ingrediente, necesario para hornear una galleta.
La tercera línea contiene la secuencia b 1, b 2, …, bn , donde el número i es el número de gramos del ingrediente i , que tiene Apollinaria.
Imprima la cantidad máxima de galletas que Apollinaria podrá hornear utilizando los ingredientes que tiene y el polvo mágico.
- Cómo resolver el siguiente rompecabezas de encontrar una palabra
- Cómo resolver esta pregunta de arreglo
- Un profesor piensa en dos números consecutivos entre 1 y 10. ‘A’ conoce el primer número y ‘B’ conoce el segundo número. A dice: No sé tu número. B dice: Tampoco sé tu número. A dice: ahora lo sé. ¿Cuáles son las cuatro soluciones para esto?
- Alan está leyendo un libro con páginas numeradas del 1 al 630. El día 1 leyó el primer tercio del libro; y en el día 2 la suma de los números de página leídos fue 4.410. ¿Cuántas páginas le quedan a Alan para completar el libro?
- ¿Cuántas gotas de lluvia de 1 centímetro se necesitan para cubrir el 90% de una línea de 1 metro?
Descripción detallada aquí
Solución:
Vamos a comprobar que la respuesta actual es igual a cur . Entonces la función objetivo debe realizarse de la siguiente manera. Guardemos en la variable cnt cuántos gramos de polvo mágico necesitamos para hornear galletas cur . Recorramos los ingredientes y el ingrediente actual tiene el número i . Entonces, si a [ i ] · cur > b [ i ] hagamos cnt = cnt + a [ i ] · cur – b [ i ]. Si después de mirar algún ingrediente cnt se vuelve más de k, la función objetivo debe devolver falso . Si no existe tal ingrediente, la función objetivo debe ser verdadera .
Si la función objetivo devuelve verdadero , necesitamos mover el extremo izquierdo de la búsqueda binaria al cur , de lo contrario, debemos mover el extremo derecho de la búsqueda binaria al cur .
Mi solución cpp:
POLVO MÁGICO – enfoque de búsqueda binaria