[USACO19DEC]Tree Depth P
[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}\times \prod _{t=z+1}^n\sum _{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)\)计算。
代码,待补: