[poi2009]gas
来源:互联网 发布:ubuntu 光盘安装软件 编辑:程序博客网 时间:2024/04/29 20:24
(ps:某牛说是这题陈题= =我太孤陋寡闻了。。竟然都不知道是陈题。。。)
这题这个s的限制非常要命。
如果没有s会很好做。
先按照深度排序。
按顺序枚举
此时选择最远的点(k-th祖先)必然最优。因为按照深度排完序了,所以最远的点可以覆盖所有它子孙节点的。比较显然,
对于这个节点 选择可以覆盖到的s个最深的覆盖。。
一个节点可以选择一个建好的消防站或者离他最远的节点新建一个消防站
因为已经按照深度排完序了。所以那么一个已经建好的消防站覆盖的节点没有新的覆盖得多。所以我们就利用已经建好的消防站而不新建。
大多数人是直接选择s个最深的覆盖,- -表示我不知道该如何这样实现,感觉复杂度很大。
于是我想了一个办法。。每个节点找可以覆盖到他的最深的节点。其实本质是一样的。只是实现手段有差
实现上
给每个节点标记。
f[i,k]
表示该节点i可以拓展k的有多少个位置。。(没次新加一个消防站就给它和它的k个祖先都加上s)
然后枚举节点向上找k个祖先。。看看哪个最深的。然后从那个点出发删掉在上下长度共为k的链上各删去1.
(无论删哪条都可以(因为已经排好序了,不会影响结果,深的可以选择的,浅的选择更好)这点上我纠结了很久)
由于我的思维有限,虽然过了全部24个data,但是还是不太敢证明这样是对的。。
(变量名还是严谨点。。k不要做为主要变量。还有,我一开始的深度判断出问题了)
- [poi2009]gas
- BZOJ1117: [POI2009]救火站Gas
- BZOJ1117: [POI2009]救火站Gas
- BZOJ 1117: [POI2009]救火站Gas 贪心
- bzoj1117[POI2009]救火站Gas 贪心
- POI2009 题解
- [BZOJ 1119]POI2009 slo
- [BZOJ 1120]POI2009 str
- [BZOJ 1133]POI2009 Kon
- BZOJ 1141 POI2009 Slw
- 【BZOJ1142】【POI2009】Tab 乱搞
- BZOJ1117 POI2009 救火站
- 【BZOJ1133】[POI2009]Kon【DP】
- bzoj1137【POI2009】Wsp 岛屿
- poi2009 切题记
- BZOJ1119 [POI2009]SLO
- BZOJ1135 [POI2009]Lyz
- BZOJ 1133 [POI2009]Kon
- visual C语言 dll定义及Mfc中调用定义规则
- USACO算法系列三十三——buylow
- 写给自己的开头语
- Unity Built-in Shader详解二
- 创建,修改和删除表
- [poi2009]gas
- 佩服啊
- CSS 表格的典型实例
- 浮点数表示
- ear包和war包的文件组织结构及制作方法
- JAR、WAR、EAR的使用和区别
- SQL优化--使用分析函数(转自:http://www.cnblogs.com/zping/archive/2008/08/06/1261973.html)
- SQL特殊字符处理
- wdk minifilter 自带示例的简要说明