Doceria
Comentário por João Pedro Castro
Subtask 2 – 
Conhecimento prévio necessário:
Como todos os doces tem o mesmo custo, e nesse caso é 1, sempre fazer sentido pegar os
doces com maior doçura. Para lidar com as mudanças podemos manter um multiset e em cada atualização apagar
e adicionar
, para depois pegar os
doces com maior doçura. A complexidade é
.
Clique aqui para ver uma possível implementação.
Subtask 1 –
e 
Conhecimento prévio necessário:
Nessa subtask o cenário após toda mudança é o mesmo, logo basta usar uma DP no mesmo modelo da knapsack para calcular a resposta para o problema inicial, e depois imprimir o mesmo valor após cada mudança. A complexidade é
.
Subtask 3 – 
A ideia dessa subtask é a de que nunca faz sentido pegar os doces já atualizados, já que a doçura deles agora é 0. Podemos “renomear” os doces, falando que o primeiro doce a ser atualizado tem número
, o segundo número
, etc. Com o último doce a ser atualizado tendo número
. Agora, podemos rodar uma knapsack normal nessa ordem atualizada, e com
usando os
primeiros doces e
reais qual a maior doçura atingível. Assim, para a atualização
a resposta é
, já que não usamos os últimos
doces. A complexidade é
.
Clique aqui para ver uma possível implementação.
Subtask 4 – 
Podemos fazer duas knapsacks, com
usando os
primeiros doces com seus valores atualizados e
reais qual a maior doçura atingível; e
usando os últimos
primeiros doces com seus valores não atualizados e
reais qual a maior doçura atingível. Assim, para cada atualização
sabemos que usaremos uma quantidade
reais nos
primeiros doces, conseguindo
de doçura, e usaremos
reais nos últimos
doces, conseguindo
de doçura. Assim, para cada atualização podemos brutar o
ótimo, e deixar
e
pré-calculados.
Subtask 5 – Sem restrições adicionais
A solução é basicamente a mesma da subtask 4, mas com a ideia adicional da subtask 3 que podemos “renomear” os doces. Assim, renomeamos o primeiro doce a ser atualizado como 1, o segundo como 2, etc, e o último como
.
Clique aqui para ver uma possível implementação.
