题意:

有n个房间组成一棵树,你有m个士兵,从1号房间开始让士兵向相邻的房间出发,每个房间里有一个代价,代价是值/20个士兵,

同时有一个价值,问你花费这m个士兵可以得到的最大价值是多少,

思路:

dp[i][j]记录以节点i为根节点,j个士兵时所能够获得的最大价值

/* ***********************************************
Author        :devil
Created Time  :2016/3/23 15:33:24
************************************************ */
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <stdlib.h>
using namespace std;
#define N 110
int dp[N][N],val[N],bug[N];
bool vis[N];
vector<int>eg[N];
int n,m;
void init()
{memset(dp,0,sizeof(dp));memset(vis,false,sizeof(vis));for(int i=1;i<=n;i++)eg[i].clear();
}
void dfs(int u)
{vis[u]=true;int need=(bug[u]+19)/20;for(int i=need;i<=m;i++)dp[u][i]=val[u];for(int i=0;i<eg[u].size();i++){int to=eg[u][i];if(vis[to]) continue;dfs(to);for(int j=m;j>=need;j--)for(int k=1;k+need<=j;k++)dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[to][k]);}
}
int main()
{//freopen("in.txt","r",stdin);int x,y;while(~scanf("%d%d",&n,&m)&&n!=-1){init();for(int i=1; i<=n; i++)scanf("%d%d",&bug[i],&val[i]);for(int i=1; i<n; i++){scanf("%d%d",&x,&y);eg[x].push_back(y);eg[y].push_back(x);}if(!m) printf("0\n");else{dfs(1);printf("%d\n",dp[1][m]);}}return 0;
}

转载于:https://www.cnblogs.com/d-e-v-i-l/p/5311388.html

HDU1011 Starship Troopers(树形dp)相关推荐

  1. HDU Starship Troopers (树形DP)

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

  2. HDU 1011 Starship Troopers 树形+背包dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1011   题意:每个节点有两个值bug和brain,当清扫该节点的所有bug时就得到brain值,只有当父节点被 ...

  3. 树形DP——HDU 1011 Starship Troopers

    HDU 1011 Starship Troopers 题目 http://acm.hdu.edu.cn/showproblem.php?pid=1011 作为星河战队的领导者,你被派去摧毁这些虫子的基 ...

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

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

  5. 动态规划 —— 树形 DP

    [概述] 树形动态规划是在树的数据结构上的动态规划,在各个阶段呈现树状关系的时候可以采用树形 DP,其基本思想是由子节点的信息推出父节点的信息. 树形 DP 中,是通过以下 4 点树的特点来进行建图的 ...

  6. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  7. [树形dp] Jzoj P5233 概率博弈

    Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...

  8. fwt优化+树形DP HDU 5909

    1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...

  9. BZOJ 1040 ZJOI2008 骑士 树形DP

    题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...

最新文章

  1. spring的jar各包作用
  2. matlab title多个标题_Matlab画图,只需要这几步
  3. 你了解HTTPS工作原理吗?
  4. 新建一个虚拟环境 用于django的项目
  5. 在metasploitable里面搭建ZVulDrill
  6. hadoop1.0集群搭建
  7. <论文阅读>TARE: A Hierarchical Framework for Efficiently Exploring Complex 3D Environments
  8. C# 之 观察者模式实例 -- 订牛奶
  9. 【云主机迁移原理】华为云主机迁移服务SMS的原理分析
  10. java解析excel文件详解_java解析excel文件的方法
  11. 一看就会!Matplotlib图像基础
  12. 射频通信中的CA中的PCC和SCC概念
  13. 《上古5》置业 周详诀巧风向标
  14. kafka-topic管理
  15. EasyPOI完美实现导入导出,实用简单,一行代码即可
  16. XSS(跨站脚本)漏洞详解之XSS跨站脚本攻击漏洞的解决
  17. 克林顿的竞选活动:机器学习和Java是否可以防止它们无法处理大数据?
  18. 视频教程-2020年软考信息安全工程师_基础知识精讲软考视频培训课程-软考
  19. 信息安全概论———物理安全及身份认证
  20. Node.js 开发实践,前端工程师的MVP利器

热门文章

  1. 求约束条件下极值的拉格朗日乘子法
  2. 加入微信洗稿投诉小组1个月后,有三说说为什么坚持只发原创
  3. 全球及中国智能电网产业十四五规划方向及投资决策建议报告2021年版
  4. 全球及中国绝缘套管行业投资前景及未来竞争格局分析报告2022-2027年
  5. EJBCA使用之注册用户及创建证书
  6. 两台centos之间传送文件
  7. Tomcat企业级应用
  8. IDEA 重复代码快速重构
  9. Android 之UID and PID
  10. [codevs3044][POJ1151]矩形面积求并