pku2299 Ultra-QuickSort
2010-03-08 10:14
323 查看
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2299
题意简述:给定一列数,求逆序数。
解题思路:用归并排序的方法,二分求解,直接上自己写的模版。
代码:
题意简述:给定一列数,求逆序数。
解题思路:用归并排序的方法,二分求解,直接上自己写的模版。
代码:
#include<stdio.h> #include<algorithm> using namespace std; const int Max=500002; int a[Max],c[Max]; __int64 cnt; void MergeSort(int l,int r) //l起点(1),r终点(n+1) { int mid,i,j,tmp; if(r>l+1) { mid=(l+r)/2; MergeSort(l,mid); MergeSort(mid,r); tmp=l; for(i=l,j=mid;i<mid&&j<r;) { if(a[i]>a[j]) { c[tmp++]=a[j++]; cnt+=mid-i; // } else c[tmp++]=a[i++]; } if(j<r) for(;j<r;++j) c[tmp++]=a[j]; else for(;i<mid;++i) c[tmp++]=a[i]; for(i=l;i<r;++i) a[i]=c[i]; } } int main() { int n; while(scanf("%d",&n)&&n) { for(int i=1;i<=n;i++) scanf("%d",&a[i]); cnt=0; MergeSort(1,n+1); printf("%I64d/n",cnt); } return 0; }
相关文章推荐
- pku2299: Ultra-QuickSort
- pku2299 Ultra-QuickSort
- Pku acm 2299 Ultra-QuickSort 排序算法解题报告(四)----归并排序(MegerSort)求逆序数
- pku 2299 Ultra-QuickSort(求逆序,归并排序)
- pku 2299 Ultra-QuickSort 归并排序求逆序数
- POJ 2299 Ultra-QuickSort
- poj 2299 Ultra-QuickSort (归并排序 求逆序数)
- poj 2299 Ultra-QuickSort 归并排序求解逆序对
- poj 2299 Ultra-QuickSort【树状数组】
- poj 2299 Ultra-QuickSort(求逆序数,树状数组)
- POJ 2299 Ultra-QuickSort
- POJ 2299 Ultra-QuickSort
- poj 2299 Ultra-QuickSort(线段树,离散化求逆序数)
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
- poj 2299 Ultra-QuickSort
- POJ 2299 Ultra-QuickSort
- poj 2299 Ultra-QuickSort
- Poj 2299 Ultra-QuickSort
- POJ 2299 Ultra-QuickSort(线段树入门)
- POJ 2299 Ultra-QuickSort(树状数组)