Editorial for El Capricho Navideño de Carter
Submitting an official solution before solving the problem yourself is a bannable offence.
Authors: ,
Pista 1: Para comprar dos peluches, conviene pagar el menor entre el precio normal y la promo:
\[ \text{PAREJA}=\min(2A,\,B). \]
Pista 2: Si compras \(N\) peluches, puedes formar \(\left\lfloor \frac{N}{2}\right\rfloor\) parejas y tal vez sobra uno:
\[ N = 2\left\lfloor \frac{N}{2}\right\rfloor + (N \bmod 2). \]
Solución
Para cada caso de prueba se dan \(N\), \(A\) y \(B\).
- Un peluche cuesta \(A\).
- Un paquete de dos peluches cuesta \(B\).
Se pide el costo mínimo para comprar exactamente \(N\) peluches.
La idea es comprar la mayor cantidad posible en pares. Cada par de peluches puede comprarse: \[ A + A = 2A \quad \text{o} \quad B. \] Por lo tanto, el costo mínimo de un par es: \[ \text{PAREJA}=\min(2A,\,B). \]
El número de pares que podemos formar es \(\left\lfloor \frac{N}{2}\right\rfloor\).
Si \(N\) es impar, queda un peluche adicional que necesariamente se compra a precio \(A\).
Así, la respuesta es: \[ \text{RESP}=\left\lfloor \frac{N}{2}\right\rfloor \cdot \min(2A,\,B) + (N \bmod 2)\cdot A. \]
Se repite este procedimiento para los \(T\) casos de prueba.
Implementación en C++:
El_Capricho_Navideno_de_Carter.cpp
Complejidad:
Cada caso se resuelve en tiempo constante \(O(1)\).
Para \(T\) casos, la complejidad total es \(O(T)\) y la memoria es \(O(1)\).
Comments