做题记录 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_{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\) 情况,则有
第二种可以分步转移
按照拓扑序转移,容易做到 \(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\)
此时
然后考虑重链,设链从上往下为 \(p_{1\sim k},p_1=u\),则 \(\forall v=p_i\),有
特别地除了最后一个 \(p\) 外,设 \(v\) 连向下一个点的边权为 \(l\),有
以上转移都是 \((\max,+)\) 卷积,因此可以闵可夫斯基和优化
对 \(f\) 的影响可以视为矩乘,从而存在结合律,因此对于连续的求积,可以每次从一半的位置分治以保证复杂度
总时间复杂度 \(O(n\log^2 n)\)

浙公网安备 33010602011771号