制限時間: 1000ミリ秒 | メモリの制限: 65536kも | |
合計提出: 52318 | 受け入れ: 21912 |
説明
ベッシーはモールの宝石店に行ってと魅力のブレスレットをスパイしています。もちろん、彼女はから可能な限り最高の魅力とそれを埋めるしたい N(1≤ N 3402≤)利用できる魅力。各魅力 I 供給するリストには、量を有する W I (1≤ W iが 400以下)、 '望ましさ'因子 D I (1≤ Dは、iが 100以下)、最も一度に使用することができます。ベッシーはその重量以上のものではありません魅力のブレスレットをサポートすることができます Mを (1≤ M 12880≤)。
制約とその重みと望まし評価と魅力のリストとしてその重量制限を考えると、評価の可能な最大合計を推論します。
入力
* 1行目:二スペースで区切られた整数: N および M
*行2 .. N +1は:ライン I 1は、説明の魅力 I 2スペースで区切られた整数で: W I と DのI
出力
* 1行目:重量の制約与え実現することができる魅力desirabilitiesの最大の和であり、単一の整数
サンプル入力
4 6 1 4 2 6 3 12 2 7
サンプル出力
23
ACコード(テンプレートのタイトル)
書式#include <cstdioを> する#include <CStringの> の#include <アルゴリズム> 使用して名前空間はstdを、const int型の N = 13000 ; INT DP [N]。 int型 S、N。// 背包容积和物品数量構造体シング { int型、W。 int型のV; }リスト[ 3405 ]。無効INITを() { ため(int型 I = 0 ; iが= Sを<; I ++)は、DP [I] = 0 ; } ボイドパッケージ() { 用(INT I = 0 ; 私は、n <; 私は++ ) { ため(INT J = S; J> =リスト[i]は.W; j-- ) { DP [J] = MAX(DP [J]、DP [J -リスト[i]が.W] + リスト[I] .V)。 } } } int型のmain() { scanf関数(" %D%dの"、&N、&S)。 以下のために(int型私= 0 ; iがN <; I ++)はscanf関数(" %D%D "、&リスト[i]が.W、&リスト[I] .V)。 その中に(); パッケージ(); printf(" %dの」、DP [S]); 戻り 0 ; }