题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1011

题意:有N个房间,房间的连通性为树形的,就是说你要占领子结点,必须要先占领 父结点,每个房间有第一定的价值,每个房间里面有敌人,每个士兵能消灭20个敌人,现在给你m个士兵,问你能获得的最大价值为多少。

题解:dp[i][j]表示用j个士兵占领以i为根的树的最大价值,然后DFS搜树。注意:当m等于0时直接输出0,房间内没敌人也要放一个士兵。

 #include<cstdio>
#define FFC(i,a,b) for(int i=a;i<=b;i++)
#define max(a,b) ((a)>(b)?(a):(b))
const int maxn=;
int n,m,ik,g[maxn],nxt[*maxn],v[*maxn],ed,xx,yy,tx,dp[maxn][maxn];
void adg(int x,int y){v[++ed]=y,nxt[ed]=g[x],g[x]=ed;}
struct node{int x,c;}nd[maxn];
void fuck(int now,int pre){
FFC(i,nd[now].x,m)dp[now][i]=nd[now].c;
for(int i=g[now];i;i=nxt[i]){
int son=v[i];
if(son==pre)continue;
fuck(son,now);
for(int j=m;j>=nd[now].x;j--)
for(int k=;k<=j-nd[now].x;k++)
dp[now][j]=max(dp[now][j],dp[now][j-k]+dp[son][k]);
}
}
int main(){
while(~scanf("%d%d",&n,&m),n!=-){
for(ik=ed=;ik<=n;ik++)g[ik]=;
FFC(i,,n)scanf("%d%d",&tx,&nd[i].c),nd[i].x=(tx+)/;
FFC(i,,n-)scanf("%d%d",&xx,&yy),adg(xx,yy),adg(yy,xx);
if(m==){printf("0\n");continue;}
FFC(i,,n)FFC(j,,m)dp[i][j]=;
fuck(,);
printf("%d\n",dp[][m]);
}
return ;
}

hdu_1011_Starship Troopers(树形DP)的更多相关文章

  1. HDU 1011 Starship Troopers 树形DP 有坑点

    本来是一道很水的树形DP题 设dp[i][j]表示,带着j个人去攻打以节点i为根的子树的最大收益 结果wa了一整晚 原因: 坑点1: 即使这个节点里面没有守卫,你如果想获得这个节点的收益,你还是必须派 ...

  2. hdu1011 Starship Troopers 树形DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 思路:很明显的树形背包 定义dp[root][m]表示以root为根,派m个士兵的最优解,那么d ...

  3. hdu_1011(Starship Troopers) 树形dp

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 题意:打洞洞收集脑子,你带领一个军队,洞洞互联成一棵树,每个洞中有一些bug,要全部杀死这些虫子 ...

  4. hdu 1011 Starship Troopers(树形DP入门)

    Starship Troopers Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  5. [HDU 1011] Starship Troopers (树形dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 dp[u][i]为以u为根节点的,花了不超过i元钱能够得到的最大价值 因为题目里说要访问子节点必 ...

  6. 杭电OJ——1011 Starship Troopers(dfs + 树形dp)

    Starship Troopers Problem Description You, the leader of Starship Troopers, are sent to destroy a ba ...

  7. HDU-1011 Starship Troopers(树形dp)

    Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  8. HDU 1011 Starship Troopers【树形DP/有依赖的01背包】

    You, the leader of Starship Troopers, are sent to destroy a base of the bugs. The base is built unde ...

  9. HDU 1011 Starship Troopers星河战队(树形dp)

    题意 有n个洞穴编号为1-n,洞穴间有通道,形成了一个n-1条边的树, 洞穴的入口即根节点是1. 每个洞穴有x只bugs,并有价值y的金子,全部消灭完一个洞穴的虫子,就可以获得这个洞穴的y个金子. 现 ...

随机推荐

  1. jquery点击选中,再次点击取消选中

    if(!$(this).hasClass("current")){ $(this).addClass("current"); }else{ $(this).re ...

  2. 用两个栈实现队列,剑指offer P59

    public class QueueByStack { private Stack<Integer> stack1; private Stack<Integer> stack2 ...

  3. 基于UDP协议的网络编程

    UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象. Java使用DatagramSock ...

  4. MVC修改文件上传大小问题

    在web.config文件的system.web节点的httpRuntime节点加入 maxRequestLength="2147483647" executionTimeout= ...

  5. rxJava rxandroid 学习

    学习地址 很全面: http://blog.csdn.net/meegomeego/article/details/49155989 final String[] words = {"Hel ...

  6. css3 div垂直居中

    css3: #dd{ height: 300px; background: #0000cc; display: -webkit-box; display: flex; display: -webkit ...

  7. Spring contextConfigLocation默认加载文件的位置

    在使用Spring框架的时候,如果我们使用的是XML文件配置Bean的方式的话,我们往往会在web.xml里面配置如下内容: <context-param> <param-name& ...

  8. 好友与组--ESFramework 4.0 进阶(11)

    大部分分布式通信系统中,都会涉及到客户端之间相互通信.以及需要将客户端进行分组的功能,或者是类似这方面的需求.ESFramework对这一常见的任务内置了强大的支持,包括从客户端到服务端.一直到Pla ...

  9. CodeForces 697B Barnicle 模拟

    强行模拟 纪念一下…… #include<stdio.h> #include<iostream> #include<algorithm> #include<m ...

  10. $pull

    $pull 删除所有匹配的文档,不仅仅只是删除一个. db.test.insert( {"todo":["dishes","laundry" ...