Пожалуйста, прочтите новое правило об ограничении использования AI-инструментов. ×

Блог пользователя maghrabyJr_

Автор maghrabyJr_, история, 2 года назад, По-английски

hello codeforces!

Today I thought of this variation of the knapsack problem and I couldn't find a solution.

We have $$$n$$$ items ($$$n$$$ is up to $$$10^{6}$$$). There are $$$sz_i$$$ copies of the $$$i_{th}$$$ item.

$$$\sum sz_i$$$ won't exceed $$$10^6$$$

We can pick more than one copy of each item, if we decided to pick $$$j$$$ copies of the $$$i_{th}$$$ item our score increases by $$$value[i][j]$$$

Our goal is to pick $$$k$$$ ($$$k$$$ is up to $$$10^6$$$) copies in total in a way that will maximize our score.

This sounds very standard to me, what is the solution for that?

  • Проголосовать: нравится
  • +12
  • Проголосовать: не нравится

»
15 месяцев назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

If $$$value[i]$$$ is concave in $$$j$$$ for all $$$i$$$, then simply picking the biggest $$$k$$$ differences is correct.

If not, then for $$$2$$$ kinds of objects each of size $$$2k$$$, this is $$$(+, max)$$$ convolution, which (I think) is hard to do subquadratically.