BZOJ 4027 [HEOI 2015] 兔子与樱花 解题报告
这个题看起来好神的感觉。实际上也好神。。。
我们可以考虑设 $f_u$ 表示以 $u$ 为根的子树中最多能删多少个点,
再设 $g_u$ 表示以 $u$ 为根的子树中删了 $f_u$ 个点之后,$u$ 的 $son(i) + c_i$ 的最小值。
然后就可以树形 Dp 啦。
转移的话,考虑 $u$ 的孙子及更后辈,有:
$$f_u += \sum_{v\in \{son_u\}}f_v$$
然后考虑可以 $u$ 的哪些儿子。
首先删掉一个点 $x$ 的话,会对 $fa_x$ 的载重产生 $g_x - 1$ 点个贡献,
所以我们就按照这个贡献来排序,然后贪心地从小到大来选择是否删掉这个点。
那么我们就能够对 $f_u$ 和 $g_u$ 进行转移了。
时间复杂度 $O(n\log n)$,应该是可以过的吧。。。
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define N 2000000 + 5 int n, m, tot;
int C[N], Size[N], Head[N], F[N], G[N], q[N], T[N]; struct Edge
{
int next, node;
}h[N]; inline void addedge(int u, int v)
{
h[++ tot].next = Head[u];
Head[u] = tot;
h[tot].node = v;
} inline int getint()
{
char ch = '\n';
for (; ch > '' || ch < ''; ch = getchar()) ;
int res = ch - '';
for (ch = getchar(); ch >= '' && ch <= ''; ch = getchar())
res = (res << ) + (res << ) + ch - '';
return res;
} inline void Solve()
{
int l = , r = ;
q[] = ;
while (l <= r)
{
int z = q[l ++];
for (int i = Head[z]; i; i = h[i].next)
{
int d = h[i].node;
q[++ r] = d;
}
}
for (; r; r --)
{
int z = q[r];
F[z] = T[] = , G[z] = Size[z] + C[z];
for (int i = Head[z]; i; i = h[i].next)
{
int d = h[i].node;
F[z] += F[d];
T[++ T[]] = G[d] - ;
}
sort(T + , T + T[] + );
for (int i = ; i <= T[]; i ++)
{
if (G[z] + T[i] <= m)
G[z] += T[i], F[z] ++;
else break ;
}
}
} int main()
{
#ifndef ONLINE_JUDGE
freopen("4027.in", "r", stdin);
freopen("4027.out", "w", stdout);
#endif n = getint(), m = getint();
for (int i = ; i < n; i ++)
C[i] = getint();
for (int i = ; i < n; i ++)
{
Size[i] = getint();
for (int j = ; j <= Size[i]; j ++)
{
int d = getint();
addedge(i, d);
}
}
Solve();
printf("%d\n", F[]); #ifndef ONLINE_JUDGE
fclose(stdin);
fclose(stdout);
#endif
return ;
}
4027_Gromah
BZOJ 4027 [HEOI 2015] 兔子与樱花 解题报告的更多相关文章
- BZOJ 4027:[HEOI2015]兔子与樱花(贪心+树形DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4027 [题目大意] 樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1 ...
- BZOJ 1051 最受欢迎的牛 解题报告
题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4438 Solved: 2353[S ...
- bzoj 4032 [ HEOI 2015 ] 最短不公共子串 —— 后缀自动机+序列自动机
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4032 序列自动机其实就是每个位置记录一下某字母后面第一个出现位置,为了子序列能尽量长. 对字 ...
- [BZOJ 3145][Feyat cup 1.5]Str 解题报告
[Feyat cup 1.5]Str DescriptionArcueid,白姬,真祖的公主.在和推倒贵看电影时突然对一个问题产生了兴趣:我们都知道真祖和死徒是有类似的地方.那么从现代科学的角度如何解 ...
- BZOJ 3809Gty的二逼妹子序列 解题报告+data marker
--BZOJ http://www.lydsy.com/JudgeOnline/problem.php?id=3809 考虑对l,r跑莫队,对一组维护美丽度出现次数的桶修改, 然后把桶序列用分块维护查 ...
- BZOJ 3173 [Tjoi2013] 最长上升子序列 解题报告
这个题感觉比较简单,但却比较容易想残.. 我不会用树状数组求这个原排列,于是我只好用线段树...毕竟 Gromah 果弱马. 我们可以直接依次求出原排列的元素,每次找到最小并且最靠右的那个元素,假设这 ...
- BZOJ 4864: [BeiJing 2017 Wc]神秘物质 解题报告
4864: [BeiJing 2017 Wc]神秘物质 Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子. ...
- 【BZOJ】【4027】【HEOI2015】兔子与樱花
贪心 树上贪心问题……跟APIO2015练习赛的C很像啊…… 我的思路是:从叶子向上考虑,令a[x]表示x这个节点上樱花数量与儿子个数的和(即对于任意的x,都有$a[x]\leq m$)每次从儿子的a ...
- 【BZOJ 4027】 4027: [HEOI2015]兔子与樱花 (贪心)
4027: [HEOI2015]兔子与樱花 Description 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号 ...
随机推荐
- MATLAB的基本元素
MALTAB程序的基本数据单元是数组,MATLAB 的变量名必须以字母开头,后面可以跟字母,数字和下划线(_).只有前31个字符是有效的:如果超过了31 个字符,基余的字符将被忽略.如果声明两个变量, ...
- Map集合的两种遍历方式
Map集合:即 接口Map<K,V> map集合的两种取出方式: 1.Set<k> keyset: 将map中所有的键存入到set集合(即将所有的key值存入到set中) ...
- HTML5拖拽功能drag
1.创建拖拽对象 给需要拖拽的元素设置draggable属性,它有三个值: true:元素可以被拖拽:false:元素不能被拖拽:auto: 浏览器自己判断元素是否能被拖拽. 2.处理拖拽事件当我们拖 ...
- 301页面转向 php
新建301.php页面,在程序入口文件index.php引用301.php页面 301.php内容如下,仅用于参考: <?php$the_host = $_SERVER['HTTP_HOST'] ...
- Cordova+angularjs+ionic+vs2015开发(二)
欢迎加群学习:457351423 这里有4000多部学习视频,涵盖各种技术,有需要的欢迎进群学习! 一.创建空白Cordova应用 打开VS,选择[新建项目],选择其它语言JavaScript或者Ty ...
- Java_Web_request.setAttribute("result",username);
request.setAttribute("result",username); 在request对象中加入名为result的属性并附值为username,因为request对象是 ...
- js 金额格式化
//格式化金额 function fmoney(s, n) { n = n > 0 && n <= 20 ? n : 2; s = parseFloat((s + &quo ...
- java Springmvc ajax上传
ajax上传方式相对于普通的form上传方式要便捷,在更多的时候都会使用ajax (简单的小示例) 1.要先去下载一个 jquery.ajaxfileupload.js(基于jquery.js上的js ...
- Codevs 1535 封锁阳光大学
1535 封锁阳光大学 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大 ...
- hdu 5025 Saving Tang Monk 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092939.html 题目链接:hdu 5025 Saving Tang Monk 状态压缩 ...