Petrozavodsk Winter 2025. Day 1. Welcome JAGain Contest 补题记录
C. Camp
根据经典结论,能合法匹配当且仅当不存在绝对众数。容斥一下,枚举绝对众数的出现次数 \(p\),那么不合法的方案数为 \(m\sum_{i=n+1}^{2n}\dbinom{2n}{p}(m-1)^{2n-p}\),场上蠢到枚举 \(p\) 对 \(n\) 算贡献,然而我们可以发现这个式子是容易递推的:
\[f_{n+1}=\sum_{i=n+2}^{2n+2}\dbinom{2n+2}{p}(m-1)^{2n-p+2}=\sum_{i=n}^{2n}\left(\dbinom{2n}{p+2}+2\dbinom{2n}{p+1}+\dbinom{2n}{p}\right)(m-1)^{2n-p}
\]
\[=\sum_{p=n+2}^{2n}\dbinom{2n}{p}(m-1)^{2n-p+2}+2\sum_{i=n+1}^{2n}\dbinom{2n}{p}(m-1)^{2n-p+1}+\sum_{i=n}^{2n}\dbinom{2n}{p}(m-1)^{2n-p}
\]
\[=(m-1)^2f_n-\dbinom{2n}{n+1}(m-1)^{n+1}+2(m-1)f_n+f_n+\dbinom{2n}{n}(m-1)^n
\]
\[=m^2f_n+\dbinom{2n}{n}(m-1)^n-\dbinom{2n}{n+1}(m-1)^{n+1}
\]
时间复杂度 \(O(n\log n)\) 或 \(O(n)\)。
I. Integers and Bracket Sequences
考虑反悔贪心,一个大根堆维护左括号,一个小根堆维护跟左括号匹配的右括号。从前往后处理,如果是左括号就丢到大根堆里;否则,我们可以让右括号跟左括号匹配,或者替换掉一个已经匹配上的右括号。如果新建匹配更优,那么弹掉大根堆顶并将右括号插入小根堆;否则,弹掉小根堆顶并将右括号插入小根堆。如果一个右括号被另一个右括号弹掉了,那么被弹掉的右括号不可能出现在最优解里,容易证明。时间复杂度 \(O(n\log n)\)。
J. Just an Edit Distance
考虑编辑距离的经典求法是设 \(f_{i,j}\) 为 \(s\) 匹配到 \(i\),\(t\) 匹配到 \(j\),转移可以考虑匹配、删除、插入、替换。回到原题,同理的,设 \(f_{i,j,k}\) 为 \(s\) 匹配到 \(s_{i,j}\),\(t\) 匹配到 \(k\),转移是同理的,发现在删除时会出现 \(k\) 相同的点之间的转移,跑 dij 跑不过去,但注意到答案不超过 \(k\),所以开个桶记录最短路即可,时间复杂度 \(O(l^2+nml),l=|t|\)。

浙公网安备 33010602011771号