HDU 1011 Starship Troopers(树形DP)
来源:互联网 发布:php 获取上传文件 编辑:程序博客网 时间:2024/05/17 01:11
题意:每个房间有一定的bug数和能量,给出房间连通图,攻破某房间需先攻破其上一个房间,每个士兵最多消灭20个bug,求最少士兵。
显然是树形dp。
状态转移方程:dp[u][j] = max(dp[u][j],dp[son[u]][k]+dp[u][j-k])。
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int MAX=105;int n,m,a[MAX],b[MAX],vis[MAX],dp[MAX][MAX];vector<int> son[MAX];void dfs(int u,int res){ int temp=(a[u]+19)/20; for(int i=temp;i<=m;i++)dp[u][i]=b[u]; int len=son[u].size(); for(int i=0;i<len;i++){ int v=son[u][i]; if(res>temp)dfs(v,res); for(int j=m;j>=temp;j--){ for(int k=1;k<=j-temp;k++){ dp[u][j]=max(dp[u][j],dp[v][k]+dp[u][j-k]); } } }}int main(){ // freopen("/Users/apple/input.txt","r",stdin); //freopen("/Users/apple/out.txt","w",stdout); while(scanf("%d%d",&n,&m),n!=-1||m!=-1){ memset(dp,0,sizeof(dp)); memset(vis,0,sizeof(vis)); for(int i=0;i<MAX;i++)son[i].clear(); for(int i=0;i<n;i++) scanf("%d%d",&a[i+1],&b[i+1]); for(int i=0;i<n-1;i++){ int x,y; scanf("%d%d",&x,&y); son[x].push_back(y); } if(m==0){printf("0\n");continue;} dfs(1,m); printf("%d\n",dp[1][m]); } return 0;}
0 0
- 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)
- HDU 1011 Starship Troopers (树形DP)
- 【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
- hdu 1011 Starship Troopers(树形dp)
- HDU 1011 Starship Troopers (树形DP+背包)
- hdu 1011(树形dp)Starship Troopers
- 【树形DP(背包)】 HDU 1011 Starship Troopers
- hdu 1011 Starship Troopers 树形dp
- hdu 1011 Starship Troopers(树形DP)
- Ubuntu adb 连接手机
- Git提交项目到Github
- LA3942(Trie)
- Android读取sql文件并导入数据库
- Error: Activity class {package1/package2.mainActivity} does not exist.
- HDU 1011 Starship Troopers(树形DP)
- 日经春秋 20150909
- PHP无法上传图片的解决方法
- IDA Python 基础
- 如何变化MathType破解版中上下标大小
- linux下文件内容多出^M的解决方法
- RevitAPI: 注意Revit 2016事件注册和注销行为的改变
- Java线程同步中的wait()和notify()使用简单示例
- zoj 3336 Friend Number II(数论)