Editorial for El Capricho Navideño de Carter


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Authors: San43, xenredda

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

There are no comments at the moment.