集训队胡策 2024

\(\rm Round\ 1\)

基础 ABC 练习题

首先考虑给定 \(\verb!ABC!\)\(\verb!BCA!\) 的个数如何计数。

设个数分别为 \(x\) 个和 \(y\) 个,\(z=n-x-y\)

注意到一开始的 \(x\)\(\verb!A!\) 肯定给 \(\verb!ABC!\),最开始的 \(y\)\(\verb!B!\)\(z\)\(\verb!C!\) 同理。

分配完每个子序列的第一位之后,第二位也是同理,也就是说,最优的分配方案是固定的,因此对于特殊性质,直接判断即可。

这样就能解决没有 \(\verb!?!\) 的部分,获得高达 \(40\) 分。

考虑有 \(\verb!?!\)\(|S_1|=|S_2|=n+1\) 怎么做,寻找充要条件:

\(sum_{o,i}\) 表示 \(s\) 序列前 \(i\) 个数中 \(o\) 的出现次数,记:

\[A=\max sum_{a,i}-sum_{c,i} \]

\[B=\max sum_{b,i}-sum_{a,i} \]

\[C=\max sum_{c,i}-sum_{b,i} \]

合法的充要条件是:\(A+B+C \le n\)

容易发现至少需要 \(A\)\(\verb!ABC!\)\(B\)\(\verb!BCA!\)\(C\)\(\verb!CAB!\),故必要性显然,完整证明

对于一般情况,必要条件是:\(x \ge A,y \ge B,n-x-y \ge C,A+B+C \le n\),同样可以证明是充分的。

直接按照这个 DP 复杂度过高,因此考虑容斥一下,现在我们的要求的是 \(A=x,B=y,C \le z\) 的方案数,二维容斥一下就做完了。

posted @ 2025-03-21 20:04  Tx_Lcy  阅读(12)  评论(0)    收藏  举报