Michael_Bryant最喜欢的G(al)G(ame)

那些悲伤,那些寂寞,那些几乎让自己放弃生活的希望的痛苦的回忆,绝对绝对不要将它们忘记。

Michael_Bryant最喜欢的番剧

抱歉⋯我已经绝对不可能再获得幸福了,因为⋯我发现⋯ 其实我⋯ 早就已经被幸福包围了

Michael_Bryant正在看的番剧

死亡一点也不温柔,只有无尽的黑暗和孤独。 就算联系得再紧密,人也是孤独的。

bzoj 4919:[Lydsy1706月赛]大根堆

题目链接

传送门

4919: [Lydsy1706月赛]大根堆

Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 414 Solved: 172
[Submit][Status][Discuss]

Description

给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点。每个点有一个权值v_i。
你需要将这棵树转化成一个大根堆。确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i,j,如果i在树上是j的祖先,那么v_i>v_j。
请计算可选的最多的点数,注意这些点不必形成这棵树的一个连通子树。

Input

第一行包含一个正整数n(1<=n<=200000),表示节点的个数。
接下来n行,每行两个整数v_i,p_i(0<=v_i<=10^9,1<=p_i<i,p_1=0),表示每个节点的权值与父亲。

Output

输出一行一个正整数,即最多的点数。

Sample Input

6

3 0

1 1

2 1

3 1

4 1

5 1

Sample Output

5

题解

multiset裸题
首先考虑一条链的情况
这个时候我们从后往前找一个lis即可
推广到一棵树
这个时候针对每个节点开multiset
然后放的是他的子树
找lis之后pushup
最后在1的multiset里面查询

代码

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注

隐藏