题解[USACO19DEC]Tree Depth

Posted ztc03

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解[USACO19DEC]Tree Depth相关的知识,希望对你有一定的参考价值。

题目链接

明摆着是一道计数题,计数题能用些啥?dp?我不会拦你的。多项式?生成函数?没错,这道题就是生成函数。

难发现,深度=祖先数+1,而(i)(j)的祖先,当且仅当对任意在(i)(j)之间的整数(k),均满足(a_i<a_k)

(f_{|i-j|,k})表示(i)(j)的祖先时,逆序对数为(k)的方案数,则其生成函数

[ LARGE F_{|i-j|}(x)=egin{cases}prod_{t=0,t eq j-i}^{n-1}sum_{p=0}^tx^p(i<j)\x^{i-j}prod_{t=0,t eq i-j}^{n-1}sum_{p=0}^tx^p(i>j)end{cases} ]
方法:考虑先往序列里面插入所有下标在(i)(j)之间的数(不含(i)),共(|i-j|)个数,再插入(a_i),再插入剩下的数。

然后,
[ LARGE F_{|i-j|}(x)=egin{cases}frac{prod_{t=1}^nfrac{1-x^t}{1-x}}{frac{1-x^{j-i}}{1-x}}(i<j)\x^{i-j}frac{prod_{t=1}^nfrac{1-x^t}{1-x}}{frac{1-x^{i-j}}{1-x}}(i>j)end{cases} ]
先求出(prod_{t=2}^nfrac{1-x^t}{1-x}),再乘或除(1-x^p)就可以得到(F_p(x)),取第(k)项和第(k-p)项系数。

注意:用( ext{FFT})(color{red}{ ext{TLE}}),可以暴力乘或除。

以上是关于题解[USACO19DEC]Tree Depth的主要内容,如果未能解决你的问题,请参考以下文章

USACO[19-20]Dec银组题解

[USACO19DEC] Milk Visits(gold) 题解

BZOJ 3391 [Usaco2004 Dec]Tree Cutting网络破坏:dfs无根树 节点分枝子树大小

题解 P5116 [USACO18DEC]Mixing Milk

luoguP3128 [USACO15DEC]最大流Max Flow 题解(树上差分)

BZOJ1591:[Usaco2008 Dec]Largest Fence 最大的围栏——题解