2020 ICPC Asia East Continent Final
好久没有打acm了打了场来复健
~~王负剑!王负剑!(bushi~~
#### A. Namomo Subsequence
把字符串分为 `na` 和 `momo` ,然后枚举第一个 `m` 的位置以及 `o` 是什么字符,然后计算一下左边的方案数再乘上右边的方案数即可。
求左边的方案数可以去 `dp` 。具体就是 $f[i][j]$ 表示前 $i$ 个字符, `namomo` 中的 `n` 是 $j$ 字符的方案数, `a` 是 $j$ 字符的方案数,然后求方案数的话容斥一下就好了。 `momo` 部分也类似。
效率: $O(62n)$ 。
空间和时间都很容易被卡,可以优化一下。特别是加法取模。
#### B. Rectangle Flip 2
考虑新加进来一个障碍,会减少多少矩形。
考虑枚举矩形的左边,那对于右边要么就是由左边来限制,要么就是由右边来限制,并且是由谁来限制是连续的。所以分别去统计一下就可以了。
效率: $O(n^3)$ 。
#### C. Random Shuffle
可以先求出每一轮 $\text{rand}$ 后得到的值是多少以及第 $i$ 轮的 $x$ 在第 $j$ 位是由最初的哪几位异或得到的。
然后我们就可以得到若干方程,用线性基得到最大方程组。打表发现当 $n$ 为 $50$ 的时候剩余 $47$ 个方程,也就是有 $17$ 个自由元。
然后直接枚举自由元的取值,按理来说是 $O(2^{17}n\times 64^2)$ 的,但是完全跑不满,直接写就能过。
#### D. City Brain
如果只是一条路的话,我们肯定是选择最短路,然后次数均分着用即可。
对于两条路,我们可以枚举公共路径的长度,然后得到非公共部分最短是多少,然后三分分配给公共路径的次数即可。
效率: $O(nm+n\log k)$ 。
#### E. Tube Master III
不会。
#### F. Rooks
签到,但是卡了很久。用 $\text{set}$ 搞搞就可以了。
#### G. Prof. Pang's sequence
暴力的想法是枚举右端点,枚举左端点,计算贡献。
假设枚举到右端点 $r$ ,左端点的贡献是一个 $01$ 串,那拓展到 $r+1$ 的时候就只会翻转一段连续的一段,用线段树维护即可。
然后再用线段树统计历史版本的答案总和即可。
效率: $O(n\log n)$ 。
#### H. Prof. Pang Earning Aus
不会。
#### I. Plants vs Zombies
模拟一下过程。豌豆打到僵尸的顺序是 $t$ 和索引的顺序。然后二分一下每个僵尸的死亡时间即可。
效率: $O(n\log ^2n)$ 。
#### J. Circle
不会
#### K. Allin
队友写的
#### L. Square
先把每个数的平方因子去了,那就是每个质因数出现次数和未出现次数取个min即可。
效率: $O(n\log n)$ ,其中 $\log$ 大约是一个数的质因数个数。
#### M. Fillomino
不会