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

dp[u][i]为以u为根节点的,花了不超过i元钱能够得到的最大价值

因为题目里说要访问子节点必须先访问根节点,所以

dp[u][i+j] = max(dp[u][i],dp[u][i]+dp[v][j]); v是u的儿子节点。

代码:

 import java.util.*;
import static java.lang.Math.*; class Graph{
ArrayList<ArrayList<Integer>> e;
int dp[][];
boolean vis[];
int n,m;
public Graph(int n,int m){
e = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<=n;i++){
e.add(new ArrayList<Integer>());
}
dp = new int[n+1][m+1];
vis = new boolean[n+1];
this.n = n;
this.m = m;
} public void add_edge(int from,int to){
ArrayList<Integer> t = e.get(from);
t.add(to);
} public int dfs(int u){
if( vis[u] ) return 0;
vis[u] = true; ArrayList<Integer> t = e.get(u); for(int i=m;i>=Main.w[u];i--) dp[u][i] = Main.v[u]; for(int s:t ){
if( vis[s] ) continue;
dfs(s); for(int i=m;i>=Main.w[u];i--){
for(int j=1;j<=m;j++){
if( i+j<=m ){
dp[u][i+j] =max(dp[u][i+j], dp[u][i]+dp[s][j]);
}
}
}
}
return dp[u][m];
} } public class Main{
static int N,M;
static Scanner sc = new Scanner(System.in);
static int w[],v[];
public static void main(String[] args){
while( sc.hasNext() ){ N = sc.nextInt();
M = sc.nextInt(); if( N==-1 && M==-1 ) break; w = new int[N+1];
v = new int[N+1]; Graph g = new Graph(N,M); for(int i=1;i<=N;i++){
w[i] = sc.nextInt();
v[i] = sc.nextInt();
w[i] = (w[i]+19)/20;
} for(int i=1;i<N;i++){
int a = sc.nextInt();
int b = sc.nextInt();
g.add_edge(a,b);
g.add_edge(b,a);
} if( M==0 ){
System.out.println(0);
continue;
} int ans = g.dfs(1);
System.out.println(ans); } } }

[HDU 1011] Starship Troopers (树形dp)的更多相关文章

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

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

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

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

  3. hdu 1011 Starship Troopers 树形背包dp

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

  4. hdu 1011 Starship Troopers(树形背包)

    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   题意:每个节点有两个值bug和brain,当清扫该节点的所有bug时就得到brain值,只有当父节点被 ...

  6. HDU 1011 Starship Troopers (树dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 题意: 题目大意是有n个房间组成一棵树,你有m个士兵,从1号房间开始让士兵向相邻的房间出发,每个 ...

  7. 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 ...

  8. hdu 1011 Starship Troopers 经典的树形DP ****

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

  9. hdu 1011(Starship Troopers,树形dp)

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

随机推荐

  1. 数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm

    using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...

  2. adb failed to start daemon 的解决办法

    很多人遇到下面这个问题 * daemon not running. starting it now on port 5037 * ADB server didn't ACK<br>* fa ...

  3. Eclipse设置UTF-8

    将Eclipse所有的设置都设置为UTF-8: 1) Window -> Preferences -> General -> Workspace -> Text file en ...

  4. 程序员书单_java学习基础编程篇

    Java程序设计语言.(美国)阿诺德.清晰版 http://download.csdn.net/detail/shenzhq1980/9076093 JAVA2核心技术第1卷.基础知识7th.part ...

  5. 【linux】ps 命令详解

    [root@andon lib]# ps aux ###常用格式 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0 ...

  6. 【Oracle学习笔记-4】内连接和外连接的区别

    参考链接(非常棒) 摘要 下面主要以两个例子进行说明: 例子1: 表A结构如下: select * from A | 表B结构如下: select * from B 两个表要做连接,就必须有个连接字段 ...

  7. MySQL数据库MyISAM和InnoDB存储引擎的比较

    MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深入介绍). MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索 ...

  8. Linux开机自动挂载存储

    今天有个系统的开发人员跟我说,他们测试系统出现问题重启了服务器后就发现找不到存储了. 唉,不用说了.肯定没有自动加载存储呗.一个堂堂的技术顾问,一天4-5K工资的人连这个操作都不会啊?忍了... 登录 ...

  9. 获得Unix/Linux系统中的IP、MAC地址等信息

    获得Unix/Linux系统中的IP.MAC地址等信息 中高级  |  2010-07-13 16:03  |  分类:①C语言. Unix/Linux. 网络编程 ②手册  |  4,471 次阅读 ...

  10. mongdb3.0用户验证问题

    1.  用户验证方式更改: Mongodb2.6的默认用户验证方式是:MONGODB-CR Mongodb3.0的默认用户验证方式是:SCRAM-SHA-1 因为新的验证方式在spring和java中 ...