AtCoder Beginner Contest 179
https://atcoder.jp/contests/abc179
我的 AC 代码
这场需要分析的量比较少。
D
考虑 DP,最多 \(K\leq 10\) 个区间可以转移,所以直接枚举就行。
E
注意到多次平方取模肯定会形成一个周期,对数值的转移建成图就是一个链套环的结构。
例如 \(A_0=3, mod=7\),那么
\[A_1=2, A_2=4, A_3=1, A_4=1,...
\]
因此链部分是 \(A_1, A_2\),剩下部分对应周期 \(=1\) 的环。
模数是 \(1e5\) 级别,我们可以保证在 \(1e5\) 次操作内得到周期,所以直接计算出来就好了。
F
考虑每次插棋子的操作对整体局面的影响。
可以发现边缘的行列没用,忽略之,不妨认为 \(n\leftarrow n-2\)。
行和列分别维护一个数列,初始值都是 \(n\)。
统计每一次能插入多少个白棋即可,也就是对数列进行单点查询。
假设现在第 \(k\) 列插入了 \(q\) 个白棋,那么对行数列的影响就是前缀 \(q\) 个位置的值 \(val\leftarrow \min(val, k-1)\)。
反之同理(即行插入棋子对列的影响同理)。
可以发现操作对应单点查询与前缀取 \(\min\),使用线段树维护即可。