問題
容量 $Z$ のナップサックを持っているあなたの前に、 $N$ 種類の品物があります。 $i$ 種類目の品物は、重さが $W_i$ 、価値が $V_i$ で、同じものが $M_i$ 個あります。これらの品物から重さの総和が $W$ 以下となるように好きな組み合わせを選んで持ち帰ることができます。持ち帰る品物の価値の総和の最大値を求めてください。ただし、ここで現れたパラメータはすべて整数であるとします。
この問題は次の整数計画問題で表せます。
$$\begin{aligned} \text{maximize} & \quad \sum_{i=1}^N V_ix_i \\ \text{s.t.} & \quad x_i\in \mathbb{Z}\quad (1\leq i\leq N) \\ & \quad 0\leq x_i\leq M_i\quad (1\leq i\leq N) \\ & \quad \sum_{i=1}^N W_ix_i\leq Z \end{aligned}$$
ナップサック問題に対しては、複数の解法が競プロ典型になっています。そこで、競プロ的に解けるナップサック問題の制約をピックアップしました。今のあなたならいくつ解けますか?
解説
実装例(の雰囲気だけ)
(1) ~ (11) それぞれの解法のプログラムを作成しました……が、テストまで手が回らない(*1)ので、観賞用ということで動作確認せずに投稿します。

(*1) AOJ の対応する問題でいくつか AC を確認しましたが、 AOJ のテストケースを信用していないのでそれでも自信がありません。
(1)
- $1\leq N\leq 500$
- $1\leq Z\leq 100\, 000$
- $1\leq V_i\leq 10^9$
- $1\leq W_i\leq 100\, 000$
- $M_i=1$
参考:
(2)
- $1\leq N\leq 500$
- $1\leq Z\leq 100\, 000$
- $1\leq V_i\leq 10^9$
- $1\leq W_i\leq 100\, 000$
- $\color{C00000}{M_i=10^{18}}$
参考:
(3)
- $1\leq N\leq 500$
- $1\leq Z\leq 100\, 000$
- $1\leq V_i\leq 10^9$
- $1\leq W_i\leq 100\, 000$
- $\color{2060F0}{1\leq M_i\leq 10^{18}}$
参考:
(4)
- $1\leq N\leq 500$
- $1\leq Z\leq 10^{15}$
- $1\leq V_i\leq 500$
- $1\leq W_i\leq 10^{15}$
- $M_i=1$
参考:
(5)
- $1\leq N\leq 40$
- $1\leq Z\leq 10^{15}$
- $1\leq V_i\leq 10^{15}$
- $1\leq W_i\leq 10^{15}$
- $M_i=1$
参考:
(6)
- $1\leq N\leq 500\, 000$
- $2\leq K\leq 200$
- $1\leq Z\leq 10^{18}$
- $1\leq V_i\leq 10^9$
- $W_i=K^{t_i}$ ($t_i$ は整数, $0\leq t_i\leq 200$ )
- $M_i=1$
$W_i$ の代わりに $t_i$ が入力されるとします。
参考:
(7)
- $1\leq N\leq 200$
- $1\leq Z\leq 10^{9}$
- $1\leq V_i\leq 10^{9}$
- $1\leq W_i\leq 10^{9}$
- $W_i=s_i\times 2^{t_i}$ ($s_i,t_i$ は非負整数, $1\leq s_i\leq 5$)
- $\color{2060F0}{1\leq M_i\leq 10^{18}}$
$W_i$ の代わりに $t_i$ および $s_i$ が入力されるとします。
(8)
- $1\leq N\leq 2\, 000$
- $\color{C00000}{10^{9}\leq Z\leq 2\times 10^{9}}$
- $1\leq V_i\leq 10^{9}$
- $1\leq W_i\leq 2\, 000$
- $\color{C00000}{M_i=10^{18}}$
参考:
(9)
- $1\leq N\leq 500\, 000$
- $1\leq Z\leq 10\, 000$
- $1\leq V_i\leq 10^9$
- $1\leq W_i\leq 10\, 000$
- $W_i$ の値の種類数は $500$ 以下である
- $\color{2060F0}{1\leq M_i\leq 10^{18}}$
参考:
(10)
- $1\leq N\leq 500\, 000$
- $1\leq Z\leq 10^9$
- $1\leq V_i\leq 10^9$
- $1\leq W_i\leq 200$
- $\color{2060F0}{1\leq M_i\leq 10^{18}}$
(11)
- $1\leq N\leq 500\, 000$
- $1\leq Z\leq 10^{15}$
- $1\leq V_i\leq 200$
- $1\leq W_i\leq 10^{15}$
- $\color{2060F0}{1\leq M_i\leq 10^{18}}$
補足
経緯
おわり