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

不会

posted @ 2022-07-06 14:26  xjqxjq  阅读(247)  评论(2编辑  收藏  举报