Dynamic programming problem
Difference between en1 and en2, changed 14 character(s)
Hello, codeforces! I do not know how to solve this DP problem, so I really want to know how. I will explain the condition of this problem briefly. [Link on original pdf with examples](https://yadi.sk/i/Z8_wStsR3VTmJs).↵

On our way we will meet several groups of bandits (from 1 to 20). Each group has two parameters:↵

1. $ size[i] $ — number of bandits (from 1 to 1000)↵
2. $ cost[i] $ — cost we have to pay them if we do not want to have problems (from 1 to 1000)↵

We can:↵

1. Pay them $ cost[i] $ to pass them↵

2. Pay them $ 2 * cost[i] $ to hire them↵

3. Fight them. In this case we will lose $ size[i] $ hired soldiers. The first to die are those who had been hired earlier. The hired mercenaries leave our squad after participating in three battles.↵

You need to go all the way, having spent the least amount of money. Answer — this amount. At the initial time in our squad there are no soldiers.↵

The input file contains from 1 to 50 tests. On each input file, time limit — 3 sec, memory limit — 256 MB. Therefore, for one test — 0.06 sec. Tests can be different, numbers $ cost[i] $ and $ size[i] $ can be different.↵

I tried to apply two-dimensional dynamic programming:↵

1. $ k $ — Number of passed groups.↵

2. $ sum $ — The amount of money spent↵

The cell dp[k][sum] contains the best triple of the mercenaries $(n1, n2, n3)$, who can fight in one battle, two and three battles. But I can not understand how to choose the best triple among all the transitions. ↵

If we use sum of components, triple $(1000, 0, 0)$ will be better, then $(0, 0, 999)$, but after battle with $size[i] = 1$ we get $(0, 0, 0)$ from first and $(0, 998, 0)$ from second triple and second will be better.↵

If we use lexicographic order, triple $(0, 0, 1)$ will be better, then $(1000, 0, 0)$, but first triple can not win in battle with $size[i] = 1000$ bandits.↵

I ask you to help finish this problem to the end and, if possible, provide links to similar problems.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English dmkz 2018-05-07 21:13:28 14 Tiny change: 'iginal pdf](https://' -> 'iginal pdf with examples](https://'
en1 English dmkz 2018-05-07 21:01:20 2041 Initial revision for English translation
ru2 Russian dmkz 2018-05-07 10:33:08 94
ru1 Russian dmkz 2018-05-07 10:01:40 1888 Первая редакция (опубликовано)