博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3033
阅读量:6212 次
发布时间:2019-06-21

本文共 1578 字,大约阅读时间需要 5 分钟。

dp

View Code
1 #include
2 #include
3 #include
4 using namespace std; 5 const int maxn=10010; 6 int dp[11][10010]; 7 int belong[10010]; 8 int w[10010],v[10010]; 9 int flag[20]; 10 int main() 11 {
12 int n,m,k,i,j,x; 13 while(scanf("%d%d%d",&n,&m,&k)!=EOF) 14 {
15 memset(flag,0,sizeof(flag)); 16 for(i=1;i<=n;i++) 17 {
18 scanf("%d%d%d",&belong[i],&w[i],&v[i]); 19 flag[belong[i]]=1; 20 } 21 int vis=0; 22 for(i=1;i<=k;i++) 23 if(!flag[i]) 24 {
25 vis=1; 26 printf("Impossible\n"); 27 break; 28 } 29 if(vis) continue; 30 memset(dp,0,sizeof(dp)); 31 for(i=1;i<=k;i++) 32 {
33 for(x=1;x<=n;x++) 34 {
35 if(belong[x]==i) 36 {
37 for(int j=m;j>=w[x];j--) 38 {
39 dp[i][j]=max(dp[i][j],dp[i][j-w[x]]+v[x]); 40 dp[i][j]=max(dp[i][j],dp[i-1][j-w[x]]+v[x]); 41 } 42 } 43 } 44 } 45 int ans=0; 46 for(i=0;i<=m;i++) 47 if(dp[k][i]>ans) 48 ans=dp[k][i]; 49 if(ans==0) printf("Impossible\n"); 50 else printf("%d\n",ans); 51 } 52 return 0; 53 }

转载于:https://www.cnblogs.com/xuschang-93/archive/2012/03/19/2405460.html

你可能感兴趣的文章
动态规划-导弹拦截(求最长不上升子序列和最长上升子序列)
查看>>
Django框架基础
查看>>
Codeforces Round #547 (Div. 3) B.Maximal Continuous Rest
查看>>
过滤器
查看>>
求a的连续和(15)
查看>>
String类和StringBuffer类的区别
查看>>
Silverlight/Windows8/WPF/WP7/HTML5周学习导读(8月27日-9月2日)
查看>>
2018.8.14-C#复习笔记总
查看>>
Java ConcurrentModificationException异常原因和解决方法[转载]
查看>>
Example004自动关闭的广告窗口
查看>>
换肤导致内存溢出
查看>>
BZOJ 2693 jzptab
查看>>
LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别【转】
查看>>
C#后期绑定调用COM组件
查看>>
cssText基本使用及注意事项
查看>>
走进JEDEC,解读DDR(下)
查看>>
asp.net 动软生成的DbHelperOra
查看>>
Add UserControl into DataGridView
查看>>
cocos2d-x学习笔记(1)
查看>>
Mysql数据库中的EXISTS和NOT EXISTS
查看>>