题意
求逆序对为(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))