跳转至

2020 ICPC Asia East Continent Final

排名 当场过题数 至今过题数 总题数
40/470 7 9 13

A

solved by JLK

题意

给一个由大小写字母和数字组成的字符串,求满足本质上和\(namomo\)相同的子序列个数。(也就是长度为6,由四个不同字符组成,第三个和第五个相同,第四个和第六个相同)

\(1 \le n \le 10^6\)

题解

字符集大小是\(w=62\)​,一种比较暴力的做法是枚举第三个和第四个字符,每次扫一遍计算。

要通过本题肯定要优化到\(O(nw)\)

设第三第五个字符为\(a\),第四第六为\(b\)

从后往前扫,每次令当前的字符为\(a\)​​,然后在扫的过程中处理一下对于每个\(a\)​​,每个\(b\)​​的\(cnt_b\)及其平方。这样每次对于一个当前的\(a\)​,枚举\(b\)​,就可以算出后四个字符的方案数。而现在也知道了\(a\)​和\(b\)​,就知道前两个能取哪些,可以\(O(1)\)算出前两个的方案。

这样就是\(O(nw)\)​。

B

solved by JLK

题意

一个\(n \times m\)的矩阵,每秒消失一个方块,问每秒还存在的方块构成多少矩形。(也就是矩形内部不能有空方块的个数)

\(1 \le n,m \le 500\)

题解

把每个方块的消失时间看做权值。问题等价于求每个时刻消失多少矩形。一个矩形的消失时间就是里面所有方块的权值最小值。

枚举两行,扫列,每一列的权值就是这一列在两行之间的方块权值最小值。

计算每一列作为最小值的贡献。用单调栈找到左边右边第一个比它小的即可。

\(O(n^2m)\)

C

solved by YZW

题意

题解

D

solved by JLK

题意

一个无向图,初始边权为1,有\(k\)单位的钱,每次可以花费1单位的钱来使一条边权为\(\frac 1a\)的边变为\(\frac 1{a+1}\)。有两个人要从各自起点走到各自终点,求最小的两人经过边权之和。

\(1 \le n \le 5000, 0 \le m \le 5000,0 \le k \le 10^9\)

题解

显然两人最终走的路径如果相交,那么一定是一段连续区间。

由于\(n\)不大,可以枚举相交路径的起点的终点。预处理出每两个点的距离。

这样对于每个情况,可以得到一个二元组\((a,b)\)​,表示在这种方案下,一个人走的路有\(a\)​条,两个人走的路有\(b\)​条。(简单把几个距离相加肯定会有偏大的情况,但是这里面一定能找到最优方案)

还有一个性质就是,边权一定是在\(a\)\(b\)的所有边里分别均分。

还有一个性质就是,\(b\)相同的情况下,\(a\)肯定越小越好,那么只保留最小的情况。

这样总共只有\(O(n)\)个方案需要计算,可以暴力一点,推一下式子然后直接二分套二分求出给\(a,b\)分别的边权,然后调整一下。

推式子指的是,可以比较硬币当前给\(a\)或者给\(b\)的边权差值,这样可以求出对于某个给\(a\)的分配,\(b\)最多分多少是比给\(a\)优的。先二分给\(a\)的,再二分给\(b\)的即可。后者是求出最多给\(b\)多少,前者是要求比\(k\)小的最大\(a\)

\(O(n^2+n\log^2n)\)

E

upsolved by

题意

题解

F

solved by TYB

题意

签到。

题解

略。

G

upsolved by TYB

题意

给出长度为\(n\)的序列\(a\)\(m\)次询问,每次给出\(L,R\),求满足\(L\le l\le r\le R\)\(a_l,a_{l+1},\dots,a_r\)中不同数的个数为奇数的\((l,r)\)的对数。

\(n,m\le5\times10^5\)

题解

考虑离线,扫描右端点\(r\),维护一个长度为\(n\)\(01\)序列,第\(i\)位为\(1\)表示区间\([i,r]\)中不同数的个数为奇数。那么对于每次新加进来的\(a_r\),就是将\([poa[a_r]+1,i]\)这一段的\(01\)反转,这样一共有\(n\)次修改,设第\(i\)次修改后这个\(01\)序列的第\(j\)位为\(b_{i,j}\)。对于询问\(L,R\),相当于求\(\sum_{i=1}^R\sum_{j=L}^Rb_{i,j}\)。所以需要一个数据结构支持区间取反,求历史版本和,这个可以用线段树解决。大概是记录区间答案和、区间\(0/1\)个数、上次修改的时间、上次修改开始有多长时间处于翻转/不翻转状态。

时间复杂度是大常数的\(\mathcal{O}(n\log n)\)

H

upsolved by

题意

题解

I

upsolved by TYB

题意

不想描述,大模拟。

题解

提高代码能力。

J

upsolved by

题意

题解

K

solved by JLK

题意

德扑,已经知道自己的两张牌和公共的三张牌,问是否必胜。

题解

如果自己不是同花顺,一定能被干掉。

如果自己是同花顺,分类讨论一下,能不能被大一点的同花顺压。

L

solved by YZW

题意

题解

M

upsolved by

题意

题解

记录

TYB过F(0:09),JLK写A发现复杂度不对,换YZW写L。

YZW过L(0:35),JLK再写A,RE一次后AC(0:52)。

JLK写D,WA一次后AC(2:41)。

TYB写I,但是比较麻烦,换JLK写K,然后过了(3:26)。

又换YZW写C过了(4:17),JLK WA一次后过B(4:40)。

后来I交了几次都WA。

总结

JLK:这场自己犯的低级错误有点多,以后要注意。

TYB:提高代码能力。

YZW:该补补计算几何了……提高代码能力。

Dirt

A(-1)

B(-1)

D(-1)