题目名称 | 1968. [HEOI 2015] 兔子与樱花 |
---|---|
输入输出 | sakura.in/out |
难度等级 | ★★★ |
时间限制 | 4000 ms (4 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | 清羽 于2015-04-27加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:125, 提交:249, 通过率:50.2% | ||||
小一米 | 100 | 1.085 s | 59.42 MiB | C++ |
TAT | 100 | 1.101 s | 93.75 MiB | C++ |
/k | 100 | 1.533 s | 46.09 MiB | C++ |
Youngsc | 100 | 1.614 s | 26.92 MiB | C++ |
Anonymity | 100 | 1.656 s | 53.72 MiB | C++ |
小DOTA | 100 | 1.749 s | 53.73 MiB | C++ |
Hzoi_Mafia | 100 | 1.832 s | 30.83 MiB | C++ |
zzj | 100 | 1.846 s | 53.72 MiB | C++ |
A_LEAF | 100 | 1.900 s | 53.72 MiB | C++ |
Hzoi_Maple | 100 | 1.906 s | 30.83 MiB | C++ |
关于 兔子与樱花 的近10条评论(全部评论) | ||||
---|---|---|---|---|
树形 dp + 贪心 ?????
每个节点递归下去 然后从小到大贪心,然后返回上一节点(因为越靠近叶子节点的重量越小,越有可能多的删除) | ||||
我好弱..
看完题解还想了半天 | ||||
慢出新境界
| ||||
回复 @HZOI_蒟蒻一只 :
2333
Hzoi_Mafia
2017-06-10 19:50
9楼
| ||||
HZOI_蒟蒻一只
2017-06-10 19:36
8楼
| ||||
神tm树规
难道不是dfs贪心么= =
Hzoi_Mafia
2017-06-10 19:22
7楼
| ||||
从零开始和从一开始之间不可调和的矛盾……
HZOI_蒟蒻一只
2017-06-10 16:02
6楼
| ||||
论STL的合理使用与如何缩短代码长度
| ||||
这题……有毒
死不瞑目ing
Metatron
2016-10-27 15:04
4楼
| ||||
|
很久很久之前,森林里住着一群兔子。有一天,兔子们突然决定要去看樱花。兔子们所在森林里的樱花树很特殊。樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它看成一个有根树结构,其中0号节点是根节点。这个树的每个节点上都会有一些樱花,其中第$i$个节点有$c_i$朵樱花。樱花树的每一个节点都有最大的载重m,对于每一个节点i,它的儿子节点的个数和i节点上樱花个数之和不能超过m,即$son(i) + c_i <= m$,其中$son(i)$表示i的儿子的个数,如果i为叶子节点,则$son(i) = 0$
现在兔子们觉得樱花树上节点太多,希望去掉一些节点。当一个节点被去掉之后,这个节点上的樱花和它的儿子节点都被连到删掉节点的父节点上。如果父节点也被删除,那么就会继续向上连接,直到第一个没有被删除的节点为止。
现在兔子们希望计算在不违背最大载重的情况下,最多能删除多少节点。
注意根节点不能被删除,被删除的节点不被计入载重。
从sakura.in中读入
第一行输入两个正整数,n和m分别表示节点个数和最大载重
第二行n个整数$c_i$,表示第i个节点上的樱花个数
接下来n行,每行第一个数$k_i$表示这个节点的儿子个数,接下来$k_i$个整数表示这个节点儿子的编号
输出到sakura.out中。
一行一个整数,表示最多能删除多少节点。
10 4 0 2 2 2 4 1 0 4 1 1 3 6 2 3 1 9 1 8 1 1 0 0 2 7 4 0 1 5 0
4
对于30%的数据,$1 ≤ n ≤ 5000, 1 ≤ m ≤ 100, 0 ≤ c_i ≤100$
对于70%的数据,$1 ≤ n ≤ 200000, 1 ≤ m ≤ 2000, 0 ≤ c_i ≤ 1000$
对于100%的数据,$1 ≤ n ≤ 2000000, 1 ≤ m ≤ 100000, 0 ≤ c_i ≤ 1000$
数据保证初始时,每个节点樱花数与儿子节点个数之和大于0且不超过m