本文出自   http://blog.csdn.net/shuangde800

题目链接 : hdu-1011

题意

有n个洞穴编号为1~n,洞穴间有通道,形成了一个n-1条边的树, 洞穴的入口即根节点是1。
每个洞穴有x只bugs,并有价值y的金子,全部消灭完一个洞穴的虫子,就可以获得这个洞穴的y个金子.
现在要派m个战士去找金子,从入口进入。每次只有消灭完当前洞穴的所有虫子,才可以选择进入下一个洞穴。
一个战士可以消灭20只虫子,如果要杀死x只虫子,那么要x/20向上取整即(x+19)/20个战士。
如果要获得某个洞穴的金子,必须留下足够杀死所有虫子的战士数量, 即(x+19)/20个战士,然后这些留下战士就不能再去其它洞穴
其他战士可以继续走去其它洞穴,可以选择分组去不同的洞穴。
战士只能往洞穴深处走,不能走回头路
问最多能获得多少金子?

思路

这题一开始没有理解好题意,所以WA了多次,理解好题意就不难了。
我们可以知道每个节点的花费cost(i) = (x(i)+19)/20。
那么,
f(i, j):表示i子树,用j个战士最多可以获得的价值。
如果i有s个儿子节点,那么就形成了s组的物品,对每组物品进行分组背包。
每一组可以选择派1,2...j-cost(i)个战士去,为什么最多是j-cost(i)?因为还要留下cost(i)个战士消灭当前洞穴的虫子。
这样就可以得到状态转移了:

f(i, j) = max { max{ f(i, j-k) + f(v, k) | 1<=k<=j-cost(i) } |  v是i的儿子节点 }

这题要特别注意的是,如果是叶子节点,并且叶子节点的花费为0,那么要让他的花费变为1,因为必须派一个战士走向叶子节点才可以获得金子.

代码

转载于:https://www.cnblogs.com/pangblog/p/3271432.html

hdu 1011 Starship Troopers (树形背包dp)相关推荐

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

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

  2. 树形DP——HDU 1011 Starship Troopers

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

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

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

  4. 【bzoj4007】[JLOI2015]战争调度 暴力+树形背包dp

    题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $ ...

  5. 【bzoj4753】[Jsoi2016]最佳团体 分数规划+树形背包dp

    题目描述 JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人都由一位编号比他小的候选人Ri推荐.如果Ri=0则说明这个候选人是JYY自己看上的.为了 ...

  6. 【bzoj5072】[Lydsy十月月赛]小A的树 树形背包dp

    题目描述 给出一棵n个点的树,每个点有黑白两种颜色.q次询问,每次询问给出x和y,问能否选出一个x个点的联通子图,使得其中黑点数目为y. 输入 第一行一个正整数 T 表示数据组数. 对于每一组数据,第 ...

  7. HDU-4044 树形背包dp好题

    不会做,题解是参考网上的.感觉这道题是到好题,使得我对树形背包dp更了解了. 有几个注意的点,直接给出代码,题解以及注意点都在注释里了. #include<bits/stdc++.h> u ...

  8. HDU Starship Troopers (树形DP)

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

  9. HDU 1011(星河战队 树形DP)

    题意是说在一个洞穴中有许多房间,每个房间中有一些虫子和大脑,这些房间之间用隧道相连形成一棵树,士兵们杀虫子的能力有限,也可以直接杀死虫子而不消耗士兵战斗力,但这样就无法得到房间中的大脑,士兵们不能走回 ...

最新文章

  1. win2008在组件服务中未找到office组件服务
  2. [转]踏实从小事做起, 才能有大发展
  3. js实现螺旋矩阵算法
  4. 3.8 以符号常量/字面常量取代魔法数
  5. Ruby+watir自动化测试中实现识别验证码图片
  6. 3.Shell 编程从入门到精通 --- 编程基础的基本元素
  7. 计算机系统时间无法更改,Win7电脑无法修改系统时间如何解决?
  8. MATLAB寻找峰值函数
  9. 如何改变图片容量大小不影响清晰度
  10. Python期末大作业 —— 射靶
  11. 揭开手机app中摇一摇的神秘面纱
  12. [敏捷开发实践] 端到端测试你了解多少?
  13. 网络工程师的基本职责,你能当一个合格的网络工程师吗?
  14. 病毒木马查杀实战第027篇:“白加黑”恶意程序研究(中)
  15. Riak - 安装运维篇(1)
  16. 试题与研究杂志试题与研究杂志社试题与研究编辑部2023年第2期目录
  17. Matlab报错——数组索引必须为正整数或逻辑值
  18. jquery 中 $(document).ready() 与window.onload 的区别
  19. 全方位地介绍JavaScript开发中的各个主题《JavaScript编程全解》(好书分享更新中)
  20. 一、三次握手【绿皮书很重要】

热门文章

  1. CDH6.2.1安装Kafka出现的问题
  2. HBase超级详细总结
  3. 推荐 | 微软SAR近邻协同过滤算法解析(一)
  4. NLP︱高级词向量表达(三)——WordRank(简述)
  5. weblogic apache 整合 代理
  6. 唯一的确定一棵二叉树
  7. Python之路【第六篇】:Python运算符
  8. MAC下安装NDKR10e
  9. VS2010打开项目时弹出错误提示。。。VisualStudio\10.0\ActivityLog.
  10. UIPageControl 分页