[HDU 1011] Starship Troopers (树形dp)
题目链接: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)的更多相关文章
- hdu 1011 Starship Troopers(树形DP入门)
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 1011 Starship Troopers 树形DP 有坑点
本来是一道很水的树形DP题 设dp[i][j]表示,带着j个人去攻打以节点i为根的子树的最大收益 结果wa了一整晚 原因: 坑点1: 即使这个节点里面没有守卫,你如果想获得这个节点的收益,你还是必须派 ...
- hdu 1011 Starship Troopers 树形背包dp
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1011 Starship Troopers(树形背包)
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 1011 Starship Troopers 树形+背包dp
http://acm.hdu.edu.cn/showproblem.php?pid=1011 题意:每个节点有两个值bug和brain,当清扫该节点的所有bug时就得到brain值,只有当父节点被 ...
- HDU 1011 Starship Troopers (树dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 题意: 题目大意是有n个房间组成一棵树,你有m个士兵,从1号房间开始让士兵向相邻的房间出发,每个 ...
- 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 ...
- hdu 1011 Starship Troopers 经典的树形DP ****
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1011(Starship Troopers,树形dp)
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- 数据导出至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; ...
- adb failed to start daemon 的解决办法
很多人遇到下面这个问题 * daemon not running. starting it now on port 5037 * ADB server didn't ACK<br>* fa ...
- Eclipse设置UTF-8
将Eclipse所有的设置都设置为UTF-8: 1) Window -> Preferences -> General -> Workspace -> Text file en ...
- 程序员书单_java学习基础编程篇
Java程序设计语言.(美国)阿诺德.清晰版 http://download.csdn.net/detail/shenzhq1980/9076093 JAVA2核心技术第1卷.基础知识7th.part ...
- 【linux】ps 命令详解
[root@andon lib]# ps aux ###常用格式 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0 ...
- 【Oracle学习笔记-4】内连接和外连接的区别
参考链接(非常棒) 摘要 下面主要以两个例子进行说明: 例子1: 表A结构如下: select * from A | 表B结构如下: select * from B 两个表要做连接,就必须有个连接字段 ...
- MySQL数据库MyISAM和InnoDB存储引擎的比较
MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深入介绍). MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索 ...
- Linux开机自动挂载存储
今天有个系统的开发人员跟我说,他们测试系统出现问题重启了服务器后就发现找不到存储了. 唉,不用说了.肯定没有自动加载存储呗.一个堂堂的技术顾问,一天4-5K工资的人连这个操作都不会啊?忍了... 登录 ...
- 获得Unix/Linux系统中的IP、MAC地址等信息
获得Unix/Linux系统中的IP.MAC地址等信息 中高级 | 2010-07-13 16:03 | 分类:①C语言. Unix/Linux. 网络编程 ②手册 | 4,471 次阅读 ...
- mongdb3.0用户验证问题
1. 用户验证方式更改: Mongodb2.6的默认用户验证方式是:MONGODB-CR Mongodb3.0的默认用户验证方式是:SCRAM-SHA-1 因为新的验证方式在spring和java中 ...