AtCoder Beginner Contest 179

https://atcoder.jp/contests/abc179

我的 AC 代码

https://atcoder.jp/contests/abc179/submissions/me?f.Task=&f.LanguageName=&f.Status=AC&f.User=HinanawiTenshi

这场需要分析的量比较少。

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\),使用线段树维护即可。

posted @ 2022-08-29 21:44  HinanawiTenshi  阅读(30)  评论(0编辑  收藏  举报