标签:class https code inpu ane src 题意 span 测试用例
W - 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
Input
输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(1<=n<=100, 1<=m<=100),分别表示经费的金额和大米的种类,然后是m行数据,每行包含3个数p,h和c(1<=p<=20,1<=h<=200,1<=c<=20),分别表示每袋的价格、每袋的重量以及对应种类大米的袋数。Output对于每组测试数据,请输出能够购买大米的最多重量,你可以假设经费买不光所有的大米,并且经费你可以不用完。每个实例的输出占一行。Sample Input
1
8 2
2 100 4
4 100 2
Sample Output
400
题意:多重背包问题 可以转化为01背包(我觉得比完全背包好转化多了... 就是说好找循环)感觉多重和完全转化后都要
增循环(第二重循环)
#include<bits/stdc++.h> using namespace std; int v[30001],w[30001],dp[100001],z[30001]; int main() { int q,n,m,a,b,c; cin>>q; while(q--) { memset(dp,0,sizeof(dp)); memset(v,0,sizeof(v)); memset(w,0,sizeof(w)); int k=0; cin>>n>>m; for(int i=0;i<m;i++) { cin>>a>>b>>c; while(c--) { k++; w[k]=a; v[k]=b; //cout<<k<<endl; } } /*cout<<k<<endl; for(int i=1;i<=k;i++) { cout<<v[i]<<" "<<w[i]<<endl; }*/ for(int i=1;i<=k;i++) { for(int j=n;j>=w[i];j--) { dp[j]=max(dp[j],dp[j-w[i]]+v[i]); } } cout<<dp[n]<<endl; } return 0; }
W - 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 <HDU 2191>
标签:class https code inpu ane src 题意 span 测试用例
原文地址:https://www.cnblogs.com/xuxua/p/9278344.html