题解 P4350 【[CERC2015]Export Estimate】

· · 题解

发现两种操作均不影响每个点的度数,第二个操作可以看作把一个点连向两个点转化成了一个边。

而点边的删除的条件都是点的度数,因此考虑点的顺序并不影响图的结构,只会影响删除/留下点的编号,但这个东西对我们没用。

那么我们就可以用一个经典的思路,把边从大到小排序,依此插入边,考虑当前的图对应的点边结构是多少,然后加入那些处于这个状态的答案。我们考虑何种情况的一个点会被删除:

因此最终状态点的数量 = n\ - 度数为 0 的点数 - 度数为 2 的点数 + 纯粹的环数

然后再考虑何种情况边的数量会改变:

因此最终状态点的数量 = m\ - 度数为 2 的点数 + 纯粹的环数。

其他东西维护都比较简单,纯粹的环数等价于该联通块每个点度数 = 2。用一个并查集维护联通块中度数为 2 的点数就好了。

时间复杂度可以做到线性(不排序,用桶,并查集两个优化做到常数)。