1. 程式人生 > >2018 UESTC Training for Dynamic Programming

2018 UESTC Training for Dynamic Programming

Content

進入命運石之門的輝子,看到的是數量巨大的記憶碎片,深知很難把這些美好記憶都帶回去給 Sakura 的輝子感到深深的無力。

一共有n塊記憶碎片,每塊記憶碎片的體積為 V_iV
i

, 每塊的美好值為 W_iW
i

,輝子現在有一個可以裝最大體積為m的魔法包,輝子想知道自己最多可以帶多大的美好值的記憶碎片回去給 Sakura。

Standard Input

第一行包含兩個整數 nn 和 mm。

第二行到第 n+1n+1 行每行兩個整數,分別表示1-n塊記憶碎片的體積 V_iV
i

和 W_iW
i

美好值。

Standard Output

輸出包含一個整數,表示最多可以帶回去多大的美好值的記憶碎片。

OJ有毒,同樣的程式碼一會CE一會RE一會TLE一會AC。
mmp多提交幾次

#include<bits/stdc++.h>
using namespace std;
#define maxn 110
int n,m,v[110],w[110],dp[1000010];
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d%d",&v[i],&w[i]);
    for
(int i=1;i<=n;i++){ for(int j=m;j>=v[i];j--){ if(dp[j]<dp[j-v[i]]+w[i]) dp[j] = dp[j-v[i]]+w[i]; } } int ans = 0;for(int i=0;i<=m;i++)ans = max(ans,dp[i]); printf("%d",ans); return 0; }