2026.10.25 衡中集训

ACM 被固定思维坑麻了。学长出的题下手就是狠。

ACM 赛题

A. 1!2!3!

场上时间差了点,没调出来。

我的做法:

修改操作就是将 1 的个数变为 2 的个数,2 的个数变为 3 的个数,3 的个数变为 1 的个数。这儿用线段树维护节点 1/2/3 的个数还是好做的。

对于查询操作,思考一次子区间操作对答案的变化,在于两个二进制位的异或。例如 3->1,就是第二位变化一次。同时,还有连着的变化,如 2->3 且 3->1,此时第一位和第二位都变化了。

可以证明,每次最优变化的最小子区间长度不超过 2:单个的 1/2/3 变化自然最小长度是 1,而我们发现,两个连续的数的效果等同于那个没有出现的数。使用两个连续的数而不是单数的原因当然是单数没有出现。如果两数之间还有别的数,一定是那个没有出现的数,我们会使用单个的数以替代两个数。

区间修改使用懒标记。由于修改最终是个环,能绕回来,所以懒标记 + 1 再取模 3 就可以了,当然懒标记处理的时候复杂度是对的。

实现上,我在每个节点上维护了 cnt01,cnt10,cnt11,lef,rig,cnt0110,cnt0111,cnt1001,cnt1011,cnt1101,cnt1110,lazy,虽然很多,但是每个的意义和用途都是很明确且单一的。

出题人做法:

与我的做法不同的是,他维护的是集合。发现我的做法中 cnt1101 和 cnt0111 实际上是一样的,所以维护取值的集合可以使线段树上挂的东西少一点。

验题人做法:

数的集合大小大于等于 2 时,实际询问时的区间修改所异或的值可以是 0/1/2/3。如果两个数都凑不全自然看看唯一有的那个数有没有用。所以维护连续段是可以免去的,取而代之的是从有的数的集合的角度出发来考虑问题。

很 atcoder,联想到 atcoder 的那场线段树训练赛。

B. RGB 色彩空间

无言。

C. 圣女?骑士?沙拉!

可以把问题转化到放点权上,祖先的点权小于等于自己的点权。

我一开始想这个东西重了怎么办巴拉巴拉的,是不是还得容斥。但我们从父节点的角度考虑,此时只需要把每个子树来的点看成一个颜色,不同子树来的不同点看成不同颜色,求方案数就好。这样的角度好处在于我根本不用管值到底取了多少,反正同一颜色内一定是原来的顺序,不同颜色不相干,所以求方案数也是对的。

很 codeforces。

D. 辉夜姬保卫战

What can I say?

很容易想到距离这个东西要变成 dep_u + dep_v - 2 dep_lca(u,v),前面两个东西当然好处理,后面这个就不好处理了。

一个关键的转化是,将从根到 u 的路径上加 1,后面 dep_lca(u,v) 就是从根到 v 的路径上的值之和。这样把必须 n^2 枚举的东西给变成求和的很好优化的东西了。

于是我们可以树链剖分!复杂度双 log。

然而我们注意到这是随机的树,树高为 O(log n),所以暴力跳即可。

还有高手,神秘点分树 / toptree 在所有情况下都是 O(n logn) 的。

场上转化没想到,实际上后面的实现是想到了的。

E. 呼啸山庄

神秘题目。

在最差情况下,所以将 b 和 c 考虑为一种群体。在 a <= b+c 时,若 b+c 都指向同一个假位置,主人公找不到正主,只能当渣男。

否则,询问到 a 的次数为 b+c+1 次时,指向正主的位置一定大于其他位置,所以可以确定。

特殊处理的,当 a+b+c=1 时,答案应为 0。

F. zyz 的狼人杀

无言。

G. 炼金术师与人鱼姬

特殊情况下,所有值都不同,显然是个一般的 LIS 问题。

好吧这题有点困难,请求学长 / 学姐再支援一下。

H. @KingGojianOfYue 突破

临项交换法。注意到交换 i 和 j 的位置对于剩下的位置的答案贡献没有影响。

设在此之前,时间已经过去了 x 时间。

若 i 在 j 之前,它们的贡献是 a_i \times x + a_j \times (x + b_i),反之同理。

将共同项消去,只剩 a_ib_j 和 a_jb_i,根据这个排序即可。这样其实是比按照 a_i/b_i 排序要更好一点(?

int128!!!

I. 植物大战僵尸

非常快啊,我观察到这个本质是排序后将数组分为若干段,段的贡献为 a_i + len^4。

这样 DP 十分的好写。dp_i 表示到第 i 段,段已结尾的最小代价,dp[i] = a[i] + min(dp[j] + (i-j)^4)。

这坨 4 方难以入手。赛时去想贪心双指针了。

注意到 200^4 > 很大的数,所以每个 i 的转移 j 不超过 200 个。

J. 我会卡特兰数!

注意到 4892 是卡特兰数第 9 项。

但是我赛时做法更吃操作些。