题意 给你一个数组求其中逆序对(ia[j])
的个数
我们来看一个归并排序的过程:
给定的数组为[2, 4, 5, 3, 1],二分后的数组分别为[2, 4, 5], [1, 3],假设我们已经完成了子过程,现在进行到该数组的“并”操作:
a: [2, 4, 5]
b: [1, 3]
result:[1]
选取b数组的1...
分类:
编程语言 时间:
2015-04-10 22:27:00
阅读次数:
191
题目传送门 1 /* 2 暴力 超时 3 */ 4 #include 5 6 const int MAX_N = 500000; 7 int a[MAX_N+10]; 8 long long cnt = 0; 9 10 int main(void) 11 { 12 ...
分类:
其他好文 时间:
2015-04-04 13:33:48
阅读次数:
255
题目大意:给出一个数列,每次交换相邻数字,求排成递增序的最少交换次数。分析:求逆序数,合并排序#include#include#include#define maxn 5000010using namespace std;int a[maxn],tem[maxn],n;long long Sort(...
分类:
其他好文 时间:
2015-03-12 18:47:07
阅读次数:
105
注意离散化的写法要熟悉 树状数组这种求逆序数的方法
分类:
编程语言 时间:
2015-02-26 22:52:27
阅读次数:
209
题目大意就是说帮你给一些(n个)乱序的数,让你求冒泡排序需要交换数的次数(n
显然不能直接模拟冒泡排序,其实交换的次数就是序列的逆序对数。
由于数据范围是 0 ≤ a[i] ≤ 999,999,999所以先要离散化,然后用合适的数据结果求出逆序
可以用线段树一步一步添加a[i],每添加前查询前面添加比它的大的有多少个就可以了。
也可用树状数组,由于树状数组求的是(1...x)的数量和所以每...
分类:
编程语言 时间:
2015-02-22 20:47:46
阅读次数:
200
In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. For the input sequence
9 1 0 5 4 ,
...
分类:
编程语言 时间:
2015-02-06 09:38:14
阅读次数:
168
题意 :交换相邻的两个数来排序 最少交换几次思路:题意可以转化成求 数列中存在几个逆序数可以看作冒泡排序 但是复杂度过高 用归并排序来完成(注意 n#include#include#includeusing namespace std;int a[5000000+100];int t[5000000...
分类:
编程语言 时间:
2015-01-29 22:19:57
阅读次数:
173
/**POJ 2299 Ultra-QuickSort*求逆序数*树状数组*离散化*/#include #include using namespace std;#define lowbit(x) x&(-x)#define int long longint n;const int MAXN = 5...
分类:
其他好文 时间:
2015-01-24 15:51:02
阅读次数:
222
求逆序对个数。
暴力 n^2 TLE妥妥的。要么 归并排序的时候统计,要么线段树或者数状数组优化。
时间复杂度都是 n*logn
线段树求逆序数怎么写呢。
例如样例的
9 1 0 5 4
其位置pos 为
0 1 2 3 4
再来一个数组设为
0 0 0 0 0
线段树先插入 (9,0),把插入的位置 0 变成 1。
1 0 0 0 0
然后统...
分类:
其他好文 时间:
2015-01-13 12:34:11
阅读次数:
189