标签:
4 2 4 4 3中有4个逆序对。当然,也存在其它方案得到4个逆序对。
数据范围:
100%的数据中,N<=10000,K<=100。
60%的数据中,N<=100。
40%的数据中,-1出现不超过两次。
动态规划
首先,我们考虑填入的数需要满足的性质。
对于两个空位a和b,分别填入数x和y,且x<y。
如果我们交换x和y,会有如下性质:
1.[1,a-1]和[b+1,n]中的数与x y构成的逆序对数不变。
2.[a+1,b-1]中大于x或小于y的数与x y构成的逆序对数不变。
3.[a+1,b-1]中在(x,y)范围内的数与x y构成逆序对。
4.x y构成逆序对。
也就是说我们如果交换x y,逆序对数会增加。
所以填入的这些数一定是单调不减的。
有了这个性质我们就可以DP了。
用f[i][j]表示第i个空位填j所形成的最小逆序对,g[i][j]表示f[i][1]-f[i][j]的最小值,cost[i][j]表示在第i个空位填j所形成的新的逆序对。显然cost[i][j]是可以预处理的。
则f[i][j]=g[i-1][j]+cost[i][j]。
注意最终答案还要加上不是空位的数形成的逆序对数。
(感觉自己表达能力好差......看不懂的话还是看代码吧...QAQ)
标签:
原文地址:http://blog.csdn.net/aarongzk/article/details/50658786