跳至主要內容

ICPC 2024 成都区域赛(Nanjing Regional)部分题解

Wallbreaker5th大约 3 分钟OI×ICPCOI×ICPCOI×ICPC - 题解OI×ICPC - 构造OI×ICPC - 贪心OI×ICPC - 计数 DPOI×ICPC - 前缀和OI×ICPC - 网络流OI×ICPC - 二分图匹配

注意

题解写得可能非常抽象。

「如果一个题解你看不懂,那是题解垃圾而不是你垃圾。」

比赛链接:UCupopen in new windowCodeforces Gymopen in new window

A. Arrow a Row

题意

定义一个箭头串为 >-...->>>- 有一个或多个)。一个初始串长为 nn,全为 *;一次操作可以将一个子串覆盖为一个箭头串。在 nn 次操作内把初始串变为给定串,或无解。n105n\leq 10^5

题解

目标串一定是开头若干个 >、中间包含一些 ->,结尾至少三个 >>>。先处理结尾的连续 >,每次覆盖 [1,n][1,n][1,n1][1,n-1]、……、[1,k][1,k]。接着 [2,k3][2,k-3] 的部分全是 -、通过覆盖 [i,k][i,k],可以把 ii 单独这个位置的 - 覆盖为 >

B. Athlete Welcome Ceremony

题意

有一个 abc 构成的串,部分位置未知。多次询问,每次给定 a,b,ca,b,c,问往未知部分填进不超过 aaa、不超过 bbb、不超过 ccc,且满足相邻两个字符不相同的方案数。n300n\leq 300

题解

n3n^3 DP 前 ii 个字符用 jjakkb、结尾字符是 ll 的方案数。DP 完后求三维前缀和即可 O(1)O(1) 查询。

D. Closest Derangement

题意

给定排列 pp,定义排列 qq 是好的当且仅当 qqpp 的一个错排且 piqi\sum \left\vert p_i-q_i \right\vert 取到最小值。求所有好的排列中字典序第 kk 小的排列。n2×105n\leq 2\times 10^5

题解

首先考虑 qq 长成什么样。nn 为偶数时,最优解为 pi=1p_i=1 对应 qi=2q_i=222 对应 1133 对应 4444 对应 33,且是唯一的最优解。

nn 为奇数时,我们无法做到每个差都为一,但最优解中只会有恰好一个 mm 指向 m+1m+1m+1m+1 指向 m+2m+2m+2m+2 指向 mm 的情况(或者反着指),因此 qq 只有 nn 个左右。特别地,若我们强制要求 qi=jq_i=j,简单讨论可以发现满足这一点的 mm 一定是一个区间(反着指会另外需要记录一个区间)。因此我们从头开始依次枚举 qq 的每个数是多少,通过判断【两个双区间求交的大小】可以判断出每个数。

K. Magical Set

题意

nn 个正整数,构成一个集合。一次操作可以把一个正整数变为它的一个非本身的因数,维持所有数互不相同。问至多能做多少次操作。n300,ai109n\leq 300,a_i\leq 10^9

题解

首先,问题可以转化为给每个原正整数选一个约数,约数互不相同,使得约数的质因数个数之和尽量小;因为我们可以将一个数每次去掉一个质因数达到选定的约数,如果集合里有其他数阻挡,可以把阻挡的数连通当前正在想操作的数一同去掉一个质因数,其等价于把原本要操作的数穿过那些阻挡的数到达目标约数。

然后怎么最大流或者最优匹配一下即可,但 CF 上数据加强过,不知道怎么过。