一:k个逆序对的数组方案个数
好吧,今天的这个题有点难,看了题解才知道怎么做。
总的分为三步:
①逆序对个数的动态规划
②k个逆序对数组方案个数的动态规划
③优化复杂度
首先,对于①,我们假设 f[i][j] 是 1~i 组成的 j 个逆序对的方案个数。对一个数组,假设第数组i个位置放的是k,那么我们可以通过以下步骤求出这个数组中的逆序对的个数。将数组的前i个元素分为两部分,即小于k的和大于k小于等于 i 的。 其中对于大于k小于等于i的部分,很明显贡献的逆序对个数是(i-k-1+1)=(i-k)个,那么剩下的部分我们需要额逆序对的个数是(j-i+k)个。小于k的部分贡献的逆序对个数与k无关,将大于k的部分都减一,