[USACO19DEC]Tree Depth P

题意

求逆序对为(k)(n)排列中,生成的笛卡尔数,每个位置的深度和。(nle 300)

做法

(f_{k})(n)排列中逆序对为(k)的个数,其生成函数为:

[prodlimits_{i=0}^{n-1}(sumlimits_{j=0}^i x^i) ]

把统计深度转换为统计祖先个数(+1)
考虑(i,j(i<j))(i)(j)的祖先,充要条件为在区间([i,j])(i)是最小的

然后我们忘掉证明这个生成函数最简单的方式,也就是从小到大推的那种
考虑一段区间([i,j]),先做这里的生成函数,然后再做前面的,再做后面的,不需要数的大小了,任意数都能产生所有的可能

也就是说,枚举(i,j),只考虑换掉原来生成函数的一项即可,然后讨论钦定哪一个为祖先,这时候是明确逆序对个数贡献的

复杂度(O(n^2+nk))

原文地址:https://www.cnblogs.com/Grice/p/12322384.html