题目
链接
题意简述
求 $n \ (n <= 1000)$ 的全排列中逆序对个数为 $k \ (k <= 1000)$ 的数目。
思路
暴力
暴力枚举全排列 ,暴力统计。
时间复杂度: $O(!n * n^{2})$ 。
预期得分: $(30)$。
暴力-UDP
暴力枚举全排列 ,树状数组求逆序对。
时间复杂度: $O(!n * nlogn)$ 。
预期得分: $(30)$。
DP
新来的数是坠大的,所以把它插入到第 $pos$ 个位置会产生 $(n - pos - 1)$ 个逆序对。
状态转移方程:
时间复杂度: $O(n^{3})$ 。
预期得分: $(60)$。
DP-UDP
可以发现每次转移都是一段区间,考虑用前缀和维护。
时间复杂度: $O(n^{2})$ 。
预期得分: $(100)$。
代码
1 |
|
杂项
- 一开始没用前缀和 $TLE$ 还 $debug$ 了好久。
- 原来的前缀和计算是用数组乱搞的,后来重构了。