题目连接: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. python 基础学习-总结1

    1.Python 简介 易学易懂,语法简单 不需编译,即可运行 比其他语言更简洁 不需要管理内存 1.1 什么是Python? python 是由Guido.van.Rossum于1989年始创,其根 ...

  2. ajax请求相关方法

    jquery的ajax请求相关方法有多个: 1.$.ajax() 示例: <!DOCTYPE html> <html> <head> <meta charse ...

  3. jQuery(3)——DOM操作

    ---恢复内容开始---   jQuery中的DOM操作 [DOM操作分类] DOM操作分为DOM Core(核心).HTML-DOM和CSS-DOM三个方面. DOM Core:任何一种支持DOM的 ...

  4. MVC创建

    [1]创建ASP.NET_MVC应用程序   1>新建项目>web>Visual Studio 2012>ASP.NET MVC4 Web应用程序   2>填写名称,位置 ...

  5. System.InvalidOperationException nested transactions are not supported

    如下bll方法,在执行时会报事务嵌套异常.bll方法里开启了分布式事务,dal方法里又启动了数据库事务.通过查看异常堆栈,发现异常是在执行BillsDal.Add(bill);方法里的var tran ...

  6. 淘淘商城_day11_课堂笔记

    今日大纲 发布前的准备 实施发布 一部分是由我来发布 一部分是由你们来发布 讲解分布式部署架构 测试 功能测试 压力测试 项目实战的准备以及分组 分组 抽取功能 讲解所需要开发的功能 项目部署上线流程 ...

  7. CSU 1640 机智的刷题方式

    完全背包 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...

  8. Mac OS终端提示符前缀”bogon”

    像往常一样新打开一个终端,却发现一个很有意思的现象,以前的提示符的组成为: [机器名]:~[用户名] 以前:YangGavin's MacBook Pro:~ yanggavin$ 现在:bogon: ...

  9. 重登陆模式 --ESFramework 4.0 快速上手(07)

    在ESFramework框架中基于TCP的服务端引擎(当然也包括Rapid引擎)都采用了这样一条规则:默认情况下,客户端与服务器成功建立TCP连接以后,服务端会从客户端发过来的第一条消息中取出消息头的 ...

  10. [ An Ac a Day ^_^ ] hdu 4565 数学推导+矩阵快速幂

    从今天开始就有各站网络赛了 今天是ccpc全国赛的网络赛 希望一切顺利 可以去一次吉大 希望还能去一次大连 题意: 很明确是让你求Sn=[a+sqrt(b)^n]%m 思路: 一开始以为是水题 暴力了 ...