POJ 2299 Ultra-QuickSort
2012-08-14 21:12
260 查看
经典问题,归并排序,求逆序数。
代码如下:
代码如下:
#include <iostream> #include <cstdlib> #include <cstring> #include <iomanip> #include <cstdio> #include <cmath> using namespace std; long long a[500002], b[500002], cct; void merge_sort(int x, int y) { if(y - x > 1) { int m = x + (y - x) / 2; int xx = x, yy = m, i = x; merge_sort(x, m); merge_sort(m, y); while(xx < m || yy < y) { if(yy >= y || (xx < m && a[xx] <= a[yy])) b[i++] = a[xx++]; else { b[i++] = a[yy++]; cct += m - xx; } } for(int i = x; i < y; i++) a[i] = b[i]; } } int main() { #ifdef test freopen("in.txt", "r", stdin); #endif int num; while(scanf("%d", &num), num) { for(int i = 0; i < num; i++) scanf("%I64d", &a[i]); cct = 0; merge_sort(0, num); printf("%I64d\n", cct); } return 0; }
相关文章推荐
- poj 2299 Ultra-QuickSort 离散化 + 树状数组
- POJ 2299 Ultra-QuickSort(归并排序 || 树状数组 || 线段树)
- poj_2299 Ultra-QuickSort(归并排序/树状数组 求逆序对)
- POJ 2299 Ultra-QuickSort 【树状数组 离散化 逆序对】
- POJ 2299 Ultra-QuickSort (归并排序、逆序数)
- poj 2299 Ultra-QuickSort
- POJ2299——Ultra-QuickSort
- POJ 2299 Ultra-QuickSort
- Hdu 1394 Minimum Inversion Number、Poj 2299 Ultra-QuickSort
- POJ 2299 Ultra-QuickSort
- POJ 2299 Ultra-QuickSort
- (应用排序算法编程7.2.2)POJ 2299 Ultra-QuickSort(使用归并排序来计算逆序对的个数)
- POJ--2299--Ultra-QuickSort
- Mathematics:Ultra-QuickSort(POJ 2299)
- POJ - 2299 Ultra-QuickSort【归并排序】
- POJ2299 Ultra-QuickSort(逆序数问题,树状数组求解)
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
- POJ 2299 Ultra-QuickSort 树状数组
- POJ 2299 Ultra-QuickSort
- poj 2299 Ultra-QuickSort(归并排序)||(树状数组+离散化)