問題一覧 >
通常問題
No.2700 Please Hack Greedy Solution!
レベル :
/ 実行時間制限 : 1ケース 0.500秒 / メモリ制限
: 512 MB / スペシャルジャッジ問題
(複数の解が存在する可能性があります)
タグ :
/
解いたユーザー数 58
作問者 :
hirayuu_yc
/ テスター :
hamamu
Magentor
問題文最終更新日: 2024-04-11 14:03:32
問題文
これは出力のみの課題です。
0-1ナップサック問題で、ほぼすべての場合で厳密解が貪欲解を上回ることはあるでしょうか。
正整数 N,W と、正整数の組の列 ((v1,w1),(v2,w2),…,(vN,wN)) のうち、以下の条件を満たすものを一つ求めてください。
- 1≤N≤2000
- 1000≤W≤2000
- 1≤vi≤109
- 1≤wi≤W
- p=1,2,…,W のうち、以下の条件を満たさない p は多くとも 1 つ
- {1,2,…,N} の部分集合 S であって ∑i∈Swi≤p を満たすものの中で、∑i∈Svi の最大値を R とする。ただし、空でない S の中で ∑i∈Swi≤p を満たすものが存在しない場合、R=0 とする。
- ((v1,w1),(v2,w2),…,(vN,wN)) を、wivi の大きい順(ただし、同じ場合は wi の大きい順)に並び替えたものに置き換え、q=p,G=0 として i=1,2,…,N の順に以下の操作を行う。
- もし wi≤q なら、q←q−wi 、G←G+vi に置き換える。
- このとき、R が最終的な G より真に大きい
出力
条件を満たす N,W,((v1,w1),(v2,w2),…,(vN,wN)) を以下のように出力してください。
N W
v1 w1
v2 w2
⋮
vN wN
サンプル
サンプル1
出力
2 3
3 1
4 2
この出力は出力例を示すものであり、以下の理由で条件を満たさないため WA と判定されます。
- 1000≤W≤2000 を満たさない
- p=1,2,…,W のうち、条件を満たさない p は 1,3 の 2 つ
- p=1 のとき、R=G=3 なので、条件を満たしません。
- ∑i∈Swi≤p を満たす S は {},{1} の 2 つで、∑i∈Svi は S が {1} のときに最大の 3 になります。よって、R=3 です。
- ((v1,w1),(v2,w2)) をwivi の大きいに並び替えたものである ((3,1),(4,2)) に置き換え、q=p,G=0 とします。
- w1≤q なので、q を q−w1=0、G を G+v1=3 に置き換えます。
- w2≤q でないので、何もしません。
- よって、最終的な G は 3 です。
- p=2 のとき、R=4,G=3 なので、条件を満たします。
- ∑i∈Swi≤p を満たす S は {},{1},{2} の 3 つで、∑i∈Svi は S が {2} のときに最大の 4 になります。よって、R=4 です。
- ((v1,w1),(v2,w2)) をwivi の大きいに並び替えたものである ((3,1),(4,2)) に置き換え、q=p,G=0 とします。
- w1≤q なので、q を q−w1=1、G を G+v1=3 に置き換えます。
- w2≤q でないので、何もしません。
- よって、最終的な G は 3 です。
- p=3 のとき、R=G=7 なので、条件を満たしません。
- ∑i∈Swi≤p を満たす S は {},{1},{2},{1,2} の 4 つで、∑i∈Svi は S が {1,2} のときに最大の 7 になります。よって、R=7 です。
- ((v1,w1),(v2,w2)) をwivi の大きいに並び替えたものである ((3,1),(4,2)) に置き換え、q=p,G=0 とします。
- w1≤q なので、q を q−w1=2、G を G+v1=3 に置き換えます。
- w2≤q なので、q を q−w2=0、G を G+v2=7 に置き換えます。
- よって、最終的な G は 7 です。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。