Processing math: 100%

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(n3)

#### C. Random Shuffle

可以先求出每一轮 rand 后得到的值是多少以及第 i 轮的 x 在第 j 位是由最初的哪几位异或得到的。

然后我们就可以得到若干方程,用线性基得到最大方程组。打表发现当 n50 的时候剩余 47 个方程,也就是有 17 个自由元。

然后直接枚举自由元的取值,按理来说是 O(217n×642) 的,但是完全跑不满,直接写就能过。

#### D. City Brain

如果只是一条路的话,我们肯定是选择最短路,然后次数均分着用即可。

对于两条路,我们可以枚举公共路径的长度,然后得到非公共部分最短是多少,然后三分分配给公共路径的次数即可。

效率: O(nm+nlogk)

#### E. Tube Master III

不会。

#### F. Rooks

签到,但是卡了很久。用 set 搞搞就可以了。

#### G. Prof. Pang's sequence

暴力的想法是枚举右端点,枚举左端点,计算贡献。

假设枚举到右端点 r ,左端点的贡献是一个 01 串,那拓展到 r+1 的时候就只会翻转一段连续的一段,用线段树维护即可。

然后再用线段树统计历史版本的答案总和即可。

效率: O(nlogn)

#### H. Prof. Pang Earning Aus

不会。

#### I. Plants vs Zombies

模拟一下过程。豌豆打到僵尸的顺序是 t 和索引的顺序。然后二分一下每个僵尸的死亡时间即可。

效率: O(nlog2n)

#### J. Circle

不会

#### K. Allin

队友写的

#### L. Square

先把每个数的平方因子去了,那就是每个质因数出现次数和未出现次数取个min即可。

效率: O(nlogn) ,其中 log 大约是一个数的质因数个数。

#### M. Fillomino

不会

posted @   xjqxjq  阅读(341)  评论(2编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示