给定
n
n
n 个点,
m
m
m 个时刻,
k
k
k,每个时刻都会新加入一条边,对于每个时刻,求此时的最大点集大小,满足点集的点构成的子图中的点的度数都不小于
k
k
k
2
≤
n
≤
2
×
1
0
5
,
2
≤
m
≤
1
×
1
0
5
,
1
≤
k
≤
n
2\le n \le 2\times10^5,2\le m \le 1\times10^5,1\le k \le n
2≤n≤2×105,2≤m≤1×105,1≤k≤n
思路
考虑如何求一张图满足题意的点集:拓扑思想,连锁反应,一个点度数 < k 了,这个点就不合法了,就要删除该点,将其加入队列,遍历出边,如果
i
n
[
v
]
=
=
k
−
1
in[v]==k-1
in[v]==k−1,将
v
v
v 加入队列。因为每个点只加入一次队列,故当一个点度数 < k - 1 时,此时不需要再考虑该点。最后不在队列中的点便是答案。
如果正序做,每次加一条边,可能让本来
i
n
[
v
]
<
k
−
1
in[v]<k-1
in[v]<k−1 的点,即不需要再考虑的点重复进队,复杂度卡成了
O
(
n
m
)
O(nm)
O(nm)
正难则反,我们考虑倒序删边。此时发现一个点的度数只减不增,不会让点重复进队,答案有单调性。复杂度降为
O
(
n
+
m
)
O(n+m)
O(n+m)
题面题意给定 nnn 个点,mmm 个时刻,kkk,每个时刻都会新加入一条边,对于每个时刻,求此时的最大点集大小,满足点集的点构成的子图中的点的度数都不小于 kkk2≤n≤2×105,2≤m≤1×105,1≤k≤n2\le n \le 2\times10^5,2\le m \le 1\times10^5,1\le k \le n2≤n≤2×105,2≤m≤1×105,1≤k≤n思路考虑如何求一张图满足题意的点集:拓扑思想,连锁反应,一个点度数 < k 了,这个点就不合法了,就要删除该点