Solution - ARC152D Halftree

首先 \(n\) 为偶数时无解,这是显然的,因为一次加两条边,总边数一定是偶数。

下面我们证明 \(n\) 为奇数时一定有解,直接进行构造。

首先将每一个点编号加上 \(k\) 再模 \(n\) 的答案求出,将其两两连边可以得到 \(\gcd(n,k)\) 个置换环,设这个值是 \(d\),每个环内部的大小相等,为 \(\frac n d\),我们钦定每个置换环中的最小的数位第一个,下面是 \(n=15\)\(k=6\) 的情况,其中每一行表示一个置换环:

0,6,12,3, 9
1,7,13,4,10
2,8,14,5,11

下文用 \(a_{i,j}\) 表示上述表格中第 \(i\) 行第 \(j\) 列的元素。

首先我们先将前 \(\frac n d-1\) 列连成一个连通块,具体地我们构造 \((a_{1,i},a_{2,i}),(a_{2,i},a_{3,i})\ldots,(a_{d-1,i},a_{d,i})\),其中 \(i\) 是奇数即可。

接下来我们将前 \(\frac n d -1\) 个连通块连通,要想做到这一点我们会同时将最后一列的某一个元素连通,具体地我们构造 \((a_{1,1},a_{1,2}),(a_{1,3},a_{1,4}),\ldots,(a_{1,n/d-2},a_{1,n/d-1})\) 即可。

最后一步,我们需要将最后一列的 \(d-1\) 个孤点连通,具体地我们构造 \((a_{2,n/d},a_{3,n/d-1}),(a_{4,n/d},a_{5,n/d-1}),\ldots,(a_{d-1,n/d},a_{d,n/d-1})\) 即可。

总时间复杂度线性。

posted @ 2022-11-21 08:28  cnyz  阅读(41)  评论(0编辑  收藏  举报