hdu 1011 Starship Troopers (树形dp+背包)
来源:互联网 发布:mac魔兽世界 编辑:程序博客网 时间:2024/05/22 15:53
树形dp加泛化背包,状态转移方程dp[u][j]=max(dp[u][j],dp[v][k]+dp[u][j-k]),有很多细节需要注意,叶子节点就算没有bug也要留人,还有m=0的特殊情况。
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#define N 105using namespace std;int c[N],w[N],dp[N][N],m;vector<int>edge[N];void dfs(int u,int fa){ int v,len=edge[u].size(),i,j,k; for(j=m;j>=c[u];j--) dp[u][j]=w[u]; //for(j=m;j>=c[u] && j>0;j--) dp[u][j]=w[u]; for(i=0;i<len;i++){ v=edge[u][i]; if(v==fa) continue; dfs(v,u); for(j=m;j>c[u];j--){ for(k=1;k<=m && k<=j-c[u];k++){ dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]); } } }}int main(){ int n; while(~scanf("%d%d",&n,&m)){ if(n==-1 && m==-1) break; int i; memset(dp,-32,sizeof(dp)); int INF=dp[0][0]; for(i=0;i<=n;i++) edge[i].clear(); for(i=1;i<=n;i++){ scanf("%d%d",c+i,w+i); c[i]=(c[i]%20)?(c[i]/20+1):(c[i]/20); } for(i=1;i<n;i++){ int a,b; scanf("%d%d",&a,&b); edge[a].push_back(b); edge[b].push_back(a); } if(m==0){ printf("0\n"); continue; } dfs(1,0); if(dp[1][m]==INF) puts("0"); else printf("%d\n",dp[1][m]); } return 0;}
0 0
- HDU 1011 Starship Troopers (树形DP+背包)
- 【树形DP(背包)】 HDU 1011 Starship Troopers
- hdu 1011 Starship Troopers (树形dp+背包)
- HDU 1011 Starship Troopers (树形DP+背包)
- HDU 1011 Starship Troopers (树形DP+依赖背包)
- HDU 1011 Starship Troopers---树形dp+有依赖的背包
- hdu 1011 Starship Troopers (树形背包dp)
- HDU 1011 Starship Troopers 树形DP(0-1背包)
- hdu 1011 Starship Troopers(树形DP+背包问题)
- hdu 1011 Starship Troopers (依赖背包 树形dp)
- HDU 1011 Starship Troopers(树形dp+背包)
- HDU 1011 Starship Troopers(树形DP/01背包)
- hdu 1011 Starship Troopers dp 带点坑的树形背包 ★
- HDU 1011 Starship Troopers(树形DP+01背包)
- 【DP】HDU 1011 Starship Troopers 树形DP
- hdu 1011 Starship Troopers(树形背包)
- HDU 1011 Starship Troopers 树形背包
- HDU 1011 Starship Troopers(树形背包)
- Linux负载均衡软件LVS之一(概念篇)
- 公开课机器学习笔记(15)支持向量机五 坐标上升法 SMO优化算法
- 图说浏览器的缓存原理及缓存方式说明(1)
- 解决U盘中文件全部变成快捷方式的问题
- JVM 深入笔记(2)内存溢出场景模拟
- hdu 1011 Starship Troopers (树形dp+背包)
- Genero Studio如何改变界面字段输入顺序
- 第一章第十题
- cmd下不能ipconfig的解决方法
- 机房重构有感
- 第一章第十一题
- Android 深入解析AsyncTask(doInBackground不工作)
- hdu-1283-最简单的计算机
- 字典树(Trie Tree)