闲扯
今天的题除了 $T3$ 不是很难的样子。
但是为什么 $T2$ 貌似 $O(n^3\log n)$ 的跑的比 $O(n^3)$ 快啊。。
题面
$T1$
Solution
根据题目描述,我们可以知道一件事:如果存在一个单调下降的序列,那么最后剩下的一定是最后一个数。
然后这道题就完了,在个数之前放一个单调下降的序列,最后判断填完没有就行。
Code
1 |
|
$T2$
Solution
首先,我们可以确定的是 $k$ 具有单调性,所以我们可以用二分。
二分+玄学
然后我们就有了一个二分的做法,然后想怎么判断是否合法。
我们直接循环多次,每次判断所有的还没有加入的边能否被加入,如果可以就加入,且端点的度数加 $1$ 。
如果这一轮一条边都没有加入,那么我们就 $break$ 掉,判断是否加入了所有的边即可。
这么做的时间复杂度是玄学的,但是实测比 $O(n^3)$ 的快了 $10$ 倍。
$O(n^3)$ 的正常做法
这道题还有一个复杂度稳定的做法。
我们要找的是最大的 $k$ ,考虑从大到小考虑每一个 $k$ 。
将能够选择的边加入一个队列中,每次取出一条边,将端点 $u,v$ 的度数加 $1$ ,然后看 $u,v$ 能不能向外拓展。
当所有边都已经加入之后,当前的枚举的 $k$ 就是答案。
Code
二分+玄学
1 |
|
$O(n^3)$
1 |
|