Paw 不难发现最终的局面大概是
<<...>>,此时中间是确定的。那么考虑对于前 $i$ 个空,形成<<<的局面,并且不影响后面的概率。发现有 $2n$ 种操作,只有一种不可取,那么 $f_i = f_{i - 1} (1 - \frac 1 {2n})$,最后求和即可。Squid Game 值得注意的是这很树形 DP。将链分为直链和曲链,发现只用选根节点就可以覆盖所有曲链,也就是答案至多增加 $1$,那么先考虑处理直链。发现直链的关键点在 $x$ 下面一个,考虑有没有必要选他。先假定不选,那么答案自然是 $\sum f_y$。然而如果是关键点,一种可能的情况是选
x覆盖,顺便也就覆盖了经过x的那些链,那么需要用 $\max f_{spc_i} + 1$ 来更新答案。最后呢,对于曲链 $(x, y)$,还需要利用 $f_x + f_y + 1$ 对答案取个 $\max$,因为爱情。[AGC045B] 这里讲一下二分的做法。
其实看到这道题的第一眼就应该想到二分,但是这个 check 比较麻烦。
将 $01$ 看作网格在上下,我们手模一下可能的路径,发现一定是一个区间的奇数或者偶数位置。

这是样例
0??0的图。
现在我们需要将路径限制在一个大小为 $mid$ 的区间内,看是否有合法路径,这很抽象,因为上下限会随着路径而改变。但是有个十分新奇的思路,我们设置 $mid$ 个起点,限制在一个 $mid$ 的长条内。
这是当 $mid = 3$ 时的三条路径。

如果将三者重叠,我们会发现每一列的合法位置是一个区间:

那么我们二分的时候维护这个区间即可,但是此时我们发现样例过不去。
对于 0??0 在 $k = 1$ 时,如果单纯的维护上下界会存在如下情况:

红色为实际的合法路径,但是我们会将黑色的两个点都覆盖进去。回顾 可能的路径,发现一定是一个区间的奇数或者偶数位置,那么我们可以将奇偶位置分开考虑,这样如果越过边界,那么利用 $\pm 2$ 来修正即可。
代码非常简单:https://atcoder.jp/contests/agc045/submissions/49005863
- # [ARC154E] Reverse and Inversion 非常好题目,经过一番神秘的推导变换,我们将式子变为了 $\sum i^2 - \sum i P_i$ 的期望。由于 $P_i$ 的期望很难求,考虑求 $x$ 所在位置的期望。一个关键的考虑是如果 $x$ 被任意操作覆盖后,期望所在的位置为 $\frac {n + 1} 2$。否则位置不变。随便计算一下,那么就搞定了。
- # Mother of Dragons 大概是说先利用神秘的变换使得问题转化为求最大团。接下来就可以乱搞了……考虑状压,实际上有用的状态只有 $O(2^{\frac n2})$ 个,记忆化即可做到正确的复杂度。然而状压怎么做?考虑状态 $S$,随便考虑一个点 $x$,一种可能是这个点不在点集内,那么就是 $S - x$。另一种考虑是这个点在,那么 $S$ 只能和 $x$ 能到的点集取交,于是就从 $S \& E_x$ 转移即可。
- # Cheap Robot 很像
刀言刀语这道题,进行多源 djk,然后建一颗最小生成树即可。 - # Frequency Problem (Hard Version) 非常抽象题,与出现次数相关,应该和根号相关。一个关键的结论是必须包含全局众数,否则一定可以继续扩展当前的区间直到全局众数为众数。然后我们来玩根号分治,对于出现次数 $\gt \sqrt n$ 的数,可以 $O(n)$ 暴力的做,并且这是简单的。但是对于 $\le \sqrt n$ 的数呢,考虑出现次数是 $O(\sqrt n)$ 级别的,我们可以枚举全局众数的出现次数,利用滑动窗口来求解。至于会不会遗漏答案呢,考虑滑动窗口不会向后移动,那么可能出现的情况如图在枚举的次数 $= 2$ 时会遗漏答案。
,而这可能发生,当存在一个非众数在某一段密度很大,但是此时全局众数密度很小,或者反过来也是。但是此时,我们一定可以将区间向外扩展,也就是忽略的情况比答案劣。所以不会遗漏答案。
- # Permutation for Burenka 发现两个序列类似,当且仅当两者的笛卡尔树同构。于是同构吧,发现每个结点合法的值都是一个区间,并且答案的值也是一个区间。相当于现在有一些区间和一些点,用这些点来覆盖这些区间,求剩下的至少/至多为多大。这是简单的贪心。但是注意判断无解的情况。
- # [ARC135D] Add to Square 离谱的构造,看到方格,想想黑白染色,顺便也就将黑白的正负号逆转一下,那么发现操作后行列和不会变化。可以得到两个矩阵可以相互转化当且仅当行列和全等。那么开始构造,如果行列符号相同,那么随便放一个绝对值小的就可以消掉一行。接下来如果行列符号不同,那么我们只在行间或者列间平衡即可。这样可以构造出下届 $\max (\sum |S_{xi}|, \sum |S_{yi}|)$。
- # [ARC149E] Sliding Window Sort 非常好题目。首先发现的是如果 $K > N - M + 1$,那么后面的操作都只是让 前 $N - M + 1$ 小数循环位移,将这些数提出来单独位移一下就可以得到 $K = N - M + 1$ 时的序列。当 $K < N - M + 1$ 时,我们只需要将后面没有用到的数都删掉,离散化一下有变成了 $K = N - M + 1$ 时的请况。问题简化了,来啃硬骨头。发现如果存在一个 $A_i$ 前面有 $A_j > A_i$,那么 $A_i$ 就不能在前面存在,反之,$A_i$ 可以存在在长为 $M$ 的区间中,任意位置,那么方案即使剩下的 $N - M + 1$ 个数的前缀最大值的个数幂次 $m$。不过最大的 $M - 1$ 个数任意填,那么需要有一个 $(m - 1)!$ 的系数。
- # [ARC156F] Make Same Set 非常好题目,对于网络流的抽象理解又抽象了很多。考虑单纯的网络流只能解决可以不选的情况。但是如果我们在开始,在网络流上就强制了所有能选 $A$ 的选 $A$,得出的答案就会是正确的,考虑为什么。
这是可能建出来的图,考虑一个都不选的路径,大概就是说对应的路径都没有流,也就是存在一条流曲折流过来将流给堵住了,使得这个点都不选,但是在此之前,这条路是存在流的。也就是只有非最短路流才会导致这个情况。那么利用
dinic,每次沿着最短路走,就不会有这个问题。