[USACO19DEC]Tree Depth P
u是v的祖先的充要条件:u是([u,v])中最小的,从小往大加元素,第i个加入的元素贡献为([0,i-1])。
然后我们枚举i,和(j-i=len)。
然后就是求这个多项式的第(k/k-(|len|-1))项:
[prod_{t=0}^z {sum _{i=0}^t x^i} imes prod _{t=z+1}^nsum _{i=0}^t x^i
]
我们可以分别对前缀和后缀搞一个背包,前缀和优化一下就可以(O(NK))做到。
设(pre_{i,j})表示前i个,总和为j的方案数。
(suf_{i,j})表示后i个,总和j的方案数。
然后两个部分卷积的时候可以发现,我们只关心两项:
(A[i])表示(pre_{i-1}*suf_{n-i})的第k项。
(B[i])表示(pre_{i-1}*suf_{n-i})的第k-(i-1)项。
(O(NK))计算。
代码,待补: