如何赢下选拔赛?

标题与内容无关。

不保证内容的真实性。

* 表示看了题解。

CF1697C

注意到操作不会改变 a 与 a,c 与 c,a 与 c 之间的相对位置关系,O(n) 扫一遍 check 就好了。

CF1697D *

第一种询问只有 26 次,所以做法应该是和字符种类数相关的。

因为单点询问次数有限,所以不应该浪费多余的第一种询问,我们只需要关心每种字符最后出现的位置,当出现新的一种字符时再使用第一种询问。

固定了左端点,移动右端点时,第二种询问的结果是单调不减的。记录每种颜色最后出现的位置,二分的时候依据已经出现过的种类 check 是否出现新种类。操作次数是 \(n \log 26\)。

CF1697E *

对于一个点 a,我们可以处理出与 a 距离最小的点的集合 \(S(a)\),那么对于另外一个点 b 的集合 \(S(b)\),当且仅当 \(S(a) = S(b)\) 时,\(S(a) \cup S(b)\) 可以染色成相同的颜色,否则其中的点必须染成两两不同的颜色。

证明可以考虑反证法。假设 \(\exist x \in S(b)\) 且 \(x \notin S(a)\),\(x\) 的颜色和 \(a\),\(b\) 不同,那么有 \(d(a, b) = d(b, x)\),\(d(a, b) < d(a, x)\),与条件 2 矛盾,所以 \(a\),\(b\) 不能染成相同的颜色。

所以如果 \(x \in S(a)\),\(x\) 与 \(a\) 连一条边,那么相当于每个能染色成相同颜色的集合就是一个完全图,且两两集合不交,每个集合中要么染成一种颜色,要么染成 \(size\) 种颜色。考虑 dp,设 \(f(i, j)\) 表示前 \(i\) 个集合,用了 \(j\) 种颜色,不考虑颜色排列 的方案数。类似于背包 dp 的倒序转移,统计答案的时候乘上排列数就好了。

那么怎么求集合呢?看起来要求出若干个完全子图,实际上题目要求的距离是曼哈顿距离,可以注意到 \(|S(a)| \leq 4\) 的,所以只要维护一个点距离最近的四个点,然后合并就好了。

CF165E

如果把位运算视为集合运算,那么 \(a \& b = 0\) 相当于 M \\oplus a 是 \(b\) 的子集,其中 \(M\) 是全集。也就是 \(A \cap B = \varnothing\),相当于 \(\complement_{M}{A} \subset B\),所以做个 SOSdp 就行了。

CF449D *

高维后缀和,高维差分。

CF1809D

因为是 01 序列,所以分界点只会有一个,枚举这个分界点算答案。

我们要把分界点左边的所有 1 删掉或换到右边,把分界点右边的 0 删掉或换到左边。在这种情况下,最多只会使用一次交换操作,否则是不如直接删掉两个数的。

那么只有当分界点为 0,前一位为 1 时,才使用交换操作。

CF1798C

\(a_i = k d_i\),\(c_i = \dfrac{1}{k} a_i b_i\),对于若干堆糖果,他们共同的 \(c_i\) 至少为 \(k' \text{lcm}(b_i \cdots )\),同时 \(a_i b_i\) 是 \(c_i\) 的倍数,所以 \(\gcd(a_i b_i \cdots)\) 是 \(c_i\) 的倍数,即 \(\gcd(a_i b_i \cdots)\) 是 \(\text{lcm}(b_i \cdots )\) 的倍数。

CF1681D

暴力是跑不满的,所以直接 bfs 就好了。

CF1598E

考虑总方案数怎么算。先不考虑单个格子的方案数,记 \(f(x, y, 0 / 1)\) 表示终点在 \((x, y)\),从左边走进来或从上边走进来的方案数,转移是简单的。

那么有修改的时候怎么办?画图,注意到修改一个点,会影响的点只会在右下角,且只会是在三条对角线上。也就是每次修改只会影响不超过 \(3n\) 个点,所以每次修改后暴力更新 右下角的 \(f(x, y, 0 / 1)\)。

CF1810E *

做法一:均摊。

精细分析。

做法二:Kruskal 重构树。

复读 https://www.luogu.com.cn/article/vjt7vs56

先把点权转换成边权,边权就是两个点的点权较大值,那么合并一个点相当于走过一条边,且打过怪的数量大于等于边权。建出 Kruskal 重构树,由 Kruskal 重构树的性质可知,能走一条边等价于子树大小大于等于重构树上该点点权,如果能走到点权为 0 的点就是有解,否则是无解。

注意图不连通时一定是无解。

CF1761C

因为题目保证了有解,所以子集关系连出来的图是个 DAG,按照拓扑序构造即可。

CF1761D *

鸽子了。

CF1761E

https://www.cnblogs.com/Lonely-233/p/18802864#cf1761e

CF1427C *

鸽子。

CF1442A

鸽子。

CF1472E *

鸽子。

CF1446B

类似于 LCS 的状态转移。