做题记录 25.10.9

\(\textcolor{purple}\odot\) P11292 【MX-S6-T4】「KDOI-11」彩灯晚会

先通过组合意义转化为依次选择两条长度为 \(l\) 且颜色相同路径的方案数

枚举 \(c\) 表示两条链交的点数,令 \(g_c\) 表示恰好重合 \(c\) 个点的方案数,则答案为 \(\sum_c k^{n-2l+c+1}g_c\)

\(f_c\) 表示钦定重合 \(c\) 个点的方案数,则 \(f_c=\sum_{d=c}^l \binom dc g_d\)

二项式反演得

\[g_c=\sum_{d=c}^l \binom dc(-1)^{d-c} f_d \]

即答案为

\[\begin{aligned} &\sum_c k^{n-2l+c+1}g_c\\ =&\sum_c k^{n-2l+c+1}\sum_{d=c}^l \binom dc(-1)^{d-c} f_d\\ =&k^{n-2l+1}\sum_c k^c\sum_{d=c}^l \binom dc(-1)^{d-c} f_d\\ =&k^{n-2l+1}\sum_{d=0}^l f_d \sum_{c=0}^d \binom dck^c (-1)^{d-c} \\ =&k^{n-2l+1}\sum_{d=0}^l f_d (k-1)^d \\ \end{aligned}\]

\(g_{u,i,j}\) 表示选择两条链,长度分别为 \(i,j\),钦定 \(c\) 个点相交的贡献系数为 \((k-1)^c\),两者结尾在 \(u\) 的方案数

\(f_{s,t,i}\) 表示 \(s\) 出发 \(t\) 结束经过 \(i\) 个点的方案数,令 \(st_{s,i}=\sum_t f_{s,t,i},to_{t,i}=\sum_s f_{s,t,i}\)

\(c=0\) 的部分单独计入答案,显然贡献为 \((\sum_s \sum_t f_{s,t,l})^2\)\(g\) 中只考虑 \(c\ge 1\) 情况,则有

\[g_{u,i,j}\gets to_{u,i} to_{u,j}(k-1)\\ g_{v,i+l,j+r}\gets g_{u,i,j} f_{u,v,l}f_{u,v,r} (k-1)\\ \]

第二种可以分步转移

按照拓扑序转移,容易做到 \(O(nml+n^2l^3)\),常数较小

代码

参考

QOJ #7419. Jiry Matchings \(\quad\) gym102331J

对树轻重链剖分,令 \(f_{u,0/1,i}\) 表示子树 \(u\)\(u\) 本身是否匹配,选择 \(i\) 对匹配,\(u\) 为重链顶时考虑重儿子,否则不考虑重儿子

先考虑轻儿子,初始 \(f_{u,0/1}\) 为空,考虑加入一个儿子 \(v\),设 \(u,v\) 之间连边为 \(l\)

此时

\[f_{u,0,i+j}\gets f_{u,0,i}+\max(f_{v,0,j},f_{v,1,j})\\ f_{u,1,i+j+1}\gets f_{u,0,i}+f_{v,0,j}+l\\ \]

然后考虑重链,设链从上往下为 \(p_{1\sim k},p_1=u\),则 \(\forall v=p_i\),有

\[f_{u,0,i+j}\gets f_{u,0,i}+\max(f_{v,0,j},f_{v,1,j})\\ f_{u,1,i+j}\gets f_{u,1,i}+\max(f_{v,0,j},f_{v,1,j})\\ \]

特别地除了最后一个 \(p\) 外,设 \(v\) 连向下一个点的边权为 \(l\),有

\[f_{u,1,i+j+1}\gets f_{u,0,i}+f_{v,0,j}+l\\ \]

以上转移都是 \((\max,+)\) 卷积,因此可以闵可夫斯基和优化

\(f\) 的影响可以视为矩乘,从而存在结合律,因此对于连续的求积,可以每次从一半的位置分治以保证复杂度

总时间复杂度 \(O(n\log^2 n)\)

代码

参考

posted @ 2025-10-10 08:56  Hstry  阅读(7)  评论(0)    收藏  举报