可乐喵大战构造题
0CF1835C
Twin Clusters
⋆如果考场上遇到了这道题,应该怎么做?(大概率不可能是CNOI)
我的做法:观察到“区间不相交”是假的,那么问题就可以转化为:
找到任意两个区间(其中要求区间的左右端点不能重合),使得他们的区间xor和相同。
观察到本质不同的区间一共有 个,但是不同的数字最多只有 22k个,那么由极端原理可以知道,有差不多一半的区间都会有异或值相同的其它区间,那么我们随机一个区间,再进行 Ο(n)的扫描就能知道能不能找到答案,每次期望有一半概率成功,可以接受,最终轻松通过。
正经做法也简单,采用折半的方法,考虑加强条件,强制钦定选择的区间前 k 位的异或和为 0,那么因为我们一共有 2k+1+1个前缀和,前 k 位只有 2k 种,那么一定存在 至少 2k+1 个前缀和能找到和它相同的前缀和,这样的组一共有 2k+1 个之后,那么后 k 位的 2k 种情况中一定会有重复的,那么就做完了。
1CF1240F Football
⋆如果考场上遇到了这道题,应该怎么做?(这个还真的可能是CNOI)
我的做法:先给每条边随机规定一个颜色,然后不断调整不合法的点,具体表现为:
-
找到一个不合法的点i和它出边颜色的众数,把众数边 (i,j)的颜色改为i出边颜色的最小值
-
如果被修改的边减小了 j 出边颜色的最小值,或者增加了 j 出边的最大值,我们递归重复上述过程,注意递归的时候规定不能改动当前已经访问过的点。
-
如果被修改的边没有减小 j 出边颜色的最小值,也没有增加 j 出边的最大值,那么递归成功。
-
否则递归失败,进行回溯。一直到递归成功为止。
-
不难发现这样找到的调整方法一定不会使得一个点的 max-min变大,而且一定会使得出发点的 max-min向变小的方向变化(众数有很多个不一定能一次改完)。
-
一次递归是 Θ(m)的,根据我们的做法一共至多递归 m 次,复杂度 Θ(m2)可以通过。
-
正确性似乎无法保证,因为我提交了很多次有一次WA了,但是不难发现出题人无法对该做法进行针对性构造,大胆写上去就能通过 Div1 的 F 获得巨大 rating delta(我又幻想了)
-
事实上,就算不随机,设定初始边全部为颜色 1 也能通过这道题,因为这个算法实在想不出卡掉的办法。
说回正题,可以先想这个 2 是怎么来的,可以发现 k=2 的情况下一个三角形就会出现 max-min=2 ,进一步的,任何一个奇环都会使得 max-min=2 的上界被顶满,但是偶环就不会。不难想到这和二分图相关。而 max-min=2 的来源是 1+1=2.
接下来这一步非常神奇(主要是我也不太能想到,不过Div1的F确实不太是给人想的),任何图都可以拆分成两个二分图,方法是给每条边定向,u→v(u<v) 改为 u→v+n,这样,如果 v 和 v+n 两个点都满足 max-min=1 那么叠加在一起就满足 max-min=2 了。
根据这个思想,我们继续拆分。假设现在一个点的度数是 ak+b,那么必然存在一个方法,使得我们把这个点拆成 a+1 个点,前 a 个点连出去的所有边颜色不同且度数为 k ,最后一个点连出去的边颜色不同。那么我们现在尝试对新图进行匹配。仍然采用调整法。现在随意从左部点连接一条符合要求的边,颜色记为 a 如果这条边导致某个右部点边的颜色重复,那就把重复的颜色换成没有重复的颜色 b,如果继续导致矛盾就继续递归,不难发现这样递归是一定不会产生环的(可能需要画图理解),那么就做完了,(非常神秘,不是很理解原理)
2CF1698F Equal Reversal
不是很难的题目,只是需要注意不少实现上的细节。
(这次没有乱搞了,只是正解)
?:我是怎么做出来这道题的?
先从特殊情况着手,两端的值是不可能移动的。
最重要的是再看倒数第二个和第二个,它一定是选择了某个 [1,x],[y,n] 这样才能被操作到最前面的。那么这样的 ax,ay一定和a1,an相同。
进而不难发现,不管怎么操作,能被操作到第二个位置的元素一定旁边有一个 ax=a1。进而发现,交换过程中 {ax,ax+1} 构成的可重集保持不变。
猜想 1.
必要条件是充要的。
证明.
先考虑把一个 ax 换到 a2 的位置,一定能找到一个 ax 旁边紧贴着一个和 a1 相同的元素。
如果 紧贴在 ax 的右侧,那么一次操作就能达到目的。
如果紧贴在 ax 的左侧,如果右边还能找到一个和 a1 相同的元素,那么通过两次操作就能换过去
如果找不到,就还需要一步操作:在 ax 及其右边找到一个元素和 ax-1及其左边的元素相等,翻转一次区间后,ax 就会在左侧了。□
猜想 2.
一定能找到这样的可以翻转区间的方法。
证明.
反证法,如果找不到,那么 ax 后面的元素在 ax 之前从没出现过,那么 {ax,ax+1} 在最终序列中对应 {b2,b3} ,以此类推,{an-1,an}对应 {bn-x+1,bn-x+2},那么 {bn-x+2,bn-x+3} 就找不到对应了。故矛盾。□

浙公网安备 33010602011771号