CF1844E Great Grids 题解
写一下一个可能与众不同的做法。
假设已经确定了第一行,接下来依次确定每一行。实际上不难发现只要确定了第一个元素就能确定一整行。
继续观察。尝试构造一下就会发现实际上每一行都是同构的。这里同构指的是行间构成类似凯撒密码的移位关系,例如 ABC,BCA,CAB 是同构的。
继续找性质。由于一个串移动三位还是它本身,所以只有移动一位或两位是有效的。
为了方便理解,不妨假设原串为 ABCBAC,分别画出下一行接其两种不同同构串的结果:
显然对于每个
所以不同的行间关系仅有两种,而且两种互斥。不仅如此,我们可以构造出所有我们需要的行间关系,具体的话考虑增量构造即可。
我们把所有
于是我们将所有相同的行间关系用并查集合并起来。接下来我们忽视这些边,仅考虑互斥行间关系的边。如果同一个连通块内有连边显然非法。否则连边一定存在于连通块间。将连通块缩起来后判断新图是否为二分图即可,容易证明这是充分必要的。
就具体实现来讲,注意到
接下来判断一下连通块内是否有边,有就说明非法。然后仅保留表示互斥行间关系的边,跑一下二分图染色即可。
时间复杂度