构造加逊
Make It Connect
-
题意
给定一个无向图 \(E\) ,每次操作需要选择一个点 \(u\) ,然后对其余的的所有点 \(v\) 进行操作,如果 \((u, v)\in E\) 则删去这条边,否则将这条边加入图中,求最少几次类似操作能够使得图联通并输出操作方案
-
做法
首先统计联通块数量以及各点的度数
-
当原图为连通图时,答案显然为 \(0\) 。
-
当图中存在一个度数为 \(0\) 的点,答案显然为 \(1\) 。
-
当存在一个连通块不是团时,答案也为 \(1\) 。
在该连通块中找到任意一个度数小于该连通块大小减一的非割点,并对其进行操作。因为不是团,因此在操作后依然保证原有连通块的联通,且能与其他连通块连边,固操作正确性有保障。
-
当存在三个及以上的连通块时,答案为 \(2\) 。
第一步为任选一个点进行操作,此时连通块的数量显然为会变成 \(2\) ,并且其中一定有一个连通块不是团,此时即为上一种情况,不再赘述。
-
最后一种情况,两个连通块均为团,答案为较小连通块的大小。
操作为对小连通块中每个点均进行操作,正确性不难证明。
-
Range = √Sum
-
题意
给定一个 \(n\) ,构造一个长度为 \(n\) 的无重复数字的数列,且对于任意 \(i\) 满足 \(1\leq a_i \leq 10^9\) ,且有
\[\max\limits_{1\leq i\leq n}\{a_i\} - \min\limits_{1\leq i\leq n}\{a_i\} = \sqrt{\sum\limits_{i = 1}^na_i} \] -
做法
对于 \(n\) 分奇偶讨论,讨论时规定 \(d\) 为极差, \(S\) 为数列中各元素和。
-
当 \(n\) 为奇数的时候
1.先以 \(n\) 作为中位数构造一个公差为 \(1\) 的等差数列
\[d = n - 1, S = n ^ 2 \]2.将全部数字 \(+2\)
\[d = n - 1, S = n^2 + 2n \]3.将非首尾的任意元素 \(+1\)
\[d = n - 1, S = n^2 + 2n + 1 \]4.将首尾元素分别 \(\mp1\)
\[d = n + 1, S = n^2 + 2n + 1 =(n + 1)^2 \] -
当 \(n\) 为偶数时
1.考虑直接构造首项为 \(\frac{n}{2}\) ,公差为 \(1\) 的等差数列
\[d = n-1, S = n^2-\frac{n}{2} \]2.从第 \(\frac{n}{2}+1\) 项开始,使得后面全体元素 \(+1\)
\[d=n,S=n^2 \]
-
Equal Tree Sums
-
题意
给定一个 \(n\) 个点的树,为每一个树赋一个绝对值不大于 \(10^5\) 的点权,使得任意一个点被移除后,剩余连通块的权值和均相等。
-
做法
对树进行黑白染色,考虑树上一点 \(u\) ,若为黑点则权值为 \(-deg_u\) ,白点则权值为 \(deg_u\) 。
正确性不难证明,首先明确每条边会对该边的两端点有 \(\pm1\) 的贡献,因此全树的点权和为 \(0\) 。对于度数为 \(x\) 的一点,在将其删去后树会变为 \(x\) 个连通块,他对于每个连通块的贡献也一定是 \(\pm1\) ,因此最后剩余连通块的权值能够保证相等。
Diane
-
题意
构造一个长度为 \(n\) 的字符串,使得全部子串的出现次数均为奇数。
-
做法
考虑一个长度为 \(n\) 的全 \('a'\) 串,其长度为 \(k\) 的子串会出现 \(n - k + 1\) 次,对 \(n\) 分奇偶讨论,可以得出
\[\begin{cases}奇数长度子串出现奇数次,偶数长度子串出现偶数次 & n\;是奇数\\奇数长度子串出现偶数次,偶数长度子串出现奇数次 & n\;是偶数\end{cases} \]那么我们可以考虑将 \(n\) 拆分为两部分,一部分为奇数长度的全 \('a'\) 串,另一部分为偶数长度的全 \('a'\) 串,实现也很简单,只需要在两个全 \('a'\) 串中间插入非 \('a'\) 字符即可。
Strange Housing
-
题意
给一个 \(n\) 个点, \(m\) 条边的图,考虑对 \(n\) 个点黑白染色,要求每条边两边的点为异色,不满足的边将被删除,求任意一个能保证 \(n\) 个点联通的方案。
-
做法
首先需要明确的是,如果原图不是连通图答案为
NO
,否则为YES
。显然我们可以通过找到生成树后进行黑白染色构造可行解,可以通过 bfs 来实现,如果当前点的邻居存在被染色的,那么无需对该点染色,否则需要对该点染色。