乍一看,以为是最简单的01背包,但是要注意的是,这个的质量太大啦,但是发现他的价值却是非常少的,所以我们换一种思路
1 正确代码 2 #include3 using namespace std; 4 5 int maxn=100000000; 6 7 int dp[5005];///价值为i所需的最小容量 8 int w[505],val[105]; 9 10 int main()11 {12 freopen("in.txt","r",stdin);13 int n,b;14 int t;15 cin>>t;16 while(t--)17 {18 int valsum=0;19 cin>>n>>b;20 for(int i=0; i >w[i]>>val[i];23 valsum+=val[i];24 }25 26 for(int i=1; i<=valsum; i++)27 dp[i]=maxn;28 29 dp[0]=0;30 31 for(int i=0; i =val[i]; j--)34 {35 dp[j]=min(dp[j],dp[j-val[i]]+w[i]);36 cout< < 0; i--)41 {42 43 if(dp[i]<=b)44 {45 s=i;46 break;47 }48 }49 cout< <