Loading

【题解】UOJ Round #21

// created on 22.09.21

A. 士兵调度

考虑这样一种构造方法:每次从大小为 \(s\times s\) 的矩形,先在左侧加满一列,再在上方加满一行,每次的增量都是 \(O(s)\) 。具体实现的时候,前面的操作直接动点,在最后 \(m\) 次操作再输出,发现恰好紧贴上界。

提交记录:Submission #584420 - Universal Online Judge (uoj.ac)

B. 挑战最大团

算是一道 educational 题。

可以发现,如果一个图是优美的,那么其补图也是优美的,而且任意子图也是优美的。第一下我们能想到的当然是转补图找性质,但是我们发现补图的性质和原图是一模一样的,而且求独立集也并不那么好做。

我们发现答案是可以由连通块合并:完全图是相加,独立集是卷积。我们转而考虑连通性。如果当前图不是联通的,那么递归到联通子图解决子问题。如果当前图是联通的,那么补图是什么状态呢?

我们不妨 猜测补图是不连通的。由于性质的特殊性,考虑归纳证明:设对于任一大小为 \(n-1\) 的优美的图,如果其联通,那么补图不连通。接着考虑反证,对于当前大小为 \(n\) 的图 \(G=(V,E)\),如果其联通,且补图联通,那么考虑任意一点 \(u\),一定在原图和补图中有边相连。

我们考虑 \(G\) 删除 \(u\) 得到的 \(G'\),因为 \(G\) 是优美的,所以 \(G'\) 是优美的,因此 \(G'\)\(G'\) 的反图中必有一个不连通。不失一般性,这里假定 \(G'\) 不连通。

假设 \(u\) 链接了若干连通块,那么一定存在一个连通块,满足其内部并不是所有的点都与 \(u\) 相连。那么从 \(u\) 开始,走一个与其相连的点 \(a\) 。再走一个与 \(a\) 相连,但是不与 \(u\) 相连的点 \(b\) 。而反过来,在另外的连通块中找到一条出边 \(u\rightarrow v\),这样 \(u,v,a,b\) 四元组非法!

因此在当前问题下,要么直接递归解决,要么在补图递归解决!

接下来是实现的问题。我们每次要分裂连通块,考虑设计一个算法,满足分裂成没有边相连的、大小分别为 \(x,y\) 的两个部分,需要的代价是 \(O(xy)\),就可以做到总 \(O(n^2)\) 的复杂度。

再次观察性质,发现图中直径是 \(\leq 2\) 的。意味着我们如果从度数为 \(d\) 的点拓展,花费 \(O(d(n-d))\) 的代价就可以知道联通情况。如果不连通的话,包含起点的连通块大小显然至少为 \(d+1\),而另外一个连通块,因为度数都不小于 \(d\),因此点数也至少为 \(d+1\),那么显然有 \(xy\leq d(n-d)\),可以接受。

于是,只需要选取原图中度数最小的点 \(x\),和反图中度数最小的点 \(y\),从度数小的一方开始做,分裂的代价就不超过 \(2xy\)

提交记录:Submission #584442 - Universal Online Judge (uoj.ac)

3. 你将如闪电般归来

这种计数你觉得我会?

posted @ 2022-09-21 11:26  Qiuly  阅读(83)  评论(0编辑  收藏  举报