第一道树形DP。很容易理解。

 #include <cstdio>
#include <cstring>
#include <cstdlib> #define MAXN 105 typedef struct {
int n, p;
} room_t; room_t rooms[MAXN];
int adj[MAXN][MAXN];
int dp[MAXN][MAXN];
bool visit[MAXN];
int n, m; int max(int a, int b) {
return a>b ? a:b;
} void dfs(int r) {
int i, j, k, num, v; visit[r] = true;
num = (rooms[r].n+) / ;
for (i=num; i<=m; ++i)
dp[r][i] = rooms[r].p; for (i=; i<=adj[r][]; ++i) {
v = adj[r][i];
if (visit[v])
continue;
dfs(v);
for (j=m; j>=num; --j) {
for (k=; k+j<=m; ++k) {
if (dp[v][k]) {
dp[r][j+k] = max(dp[r][j+k], dp[r][j]+dp[v][k]);
}
}
}
}
} int main() {
int i, j, k; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif while (scanf("%d %d", &n, &m) != EOF) {
if (n==- && m==-)
break;
memset(adj, , sizeof(adj));
memset(visit, false, sizeof(visit));
memset(dp, , sizeof(dp));
for (i=; i<=n; ++i) {
scanf("%d %d", &rooms[i].n, &rooms[i].p);
}
for (i=; i<n; ++i) {
scanf("%d %d", &j, &k);
++adj[j][];
++adj[k][];
adj[j][adj[j][]] = k;
adj[k][adj[k][]] = j;
}
if (m == ) {
printf("0\n");
continue;
}
dfs();
printf("%d\n", dp[][m]);
} return ;
}

【HDOJ】1011 Starship Troopers的更多相关文章

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

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

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

  3. HD 1011 Starship Troopers(树上的背包)

    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. 杭电OJ——1011 Starship Troopers(dfs + 树形dp)

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

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

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

  7. hdu 1011 Starship Troopers 树形背包dp

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

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

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

  9. 【51NOD-0】1011 最大公约数GCD

    [算法]欧几里德算法 #include<cstdio> int gcd(int a,int b) {?a:gcd(b,a%b);} int main() { int a,b; scanf( ...

随机推荐

  1. 这是一个在Windows live 上实验的文章

    这是一个windows 实验用的文章,希望一次成功

  2. JeeSite 企业信息管理系统基础框架

    1. JeeSite概述 1.1. 简介 JeeSite是一个开源的企业信息管理系统基础框架.主要定位于“企业信息管理”领域,可用作企业信息管理类系统.网站后台管理类系统等.JeeSite是非常强调开 ...

  3. [Redux] Writing a Todo List Reducer (Toggling a Todo)

    Learn how to implement toggling a todo in a todo list application reducer. let todo = (state = [], a ...

  4. JAVA File转Byte[]

    /** * 获得指定文件的byte数组 */ public static byte[] getBytes(String filePath){ byte[] buffer = null; try { F ...

  5. python面对对象编程----2:__init__

    面对对象编程估计我们最早接触到的就是__init__了,也就是实例的初始化处理过程: 1:来看看最基础的__init__ class Card(object): #抽象类Card,并不用于实例化 de ...

  6. mongodb的地理空间索引常见的问题

    创建地理空间索引注意事项 创建地理空间索引失败,提示错误信息如下 > db.places.ensureIndex({"loc":"2dsphere"}){ ...

  7. mysql慢查优化总结

    1.优化sql语句结构 or改成union,使用start,limit 先只查询出所有的id,然后再排序.如果查询出所有的id仍然很慢,就要仔细考虑了. 2.添加索引 mysql每次查询只能使用一个索 ...

  8. GridView下DropDownList 的选择方法onselectedindexchanged 实现方法

    在GridView下面绑定好了下拉框,我们常常会遇到一个问题, 选择方法怎么实现呢,用js总是难的去算是在GridView的第几行第几个元素,因为服务器的id和客户端的id经常变化让js根本无从找起, ...

  9. CentOs上搭建git服务器

    CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...

  10. DELL R410升级网卡驱动

    官方链接http://zh-cn.broadcom.com/support/ethernet_nic/netxtremeii.php(官方驱动的名字偶尔会改)   注意确保服务器的kernel-dev ...