POJ2299 Ultra-QuickSort
来源:互联网 发布:百度免费域名 编辑:程序博客网 时间:2024/05/18 16:38
/*Author: 2486Memory: 3880 KBTime: 360 MSLanguage: G++Result: Accepted*///序列的逆序数即为交换次数,所以求出该序列的逆序数即可//采用归并排序的思路进行求解,将他们分分划分为两个部分求解#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=500000+5;int A[maxn],T[maxn];int n;long long cnt;void merge_sort(int *AA,int x,int y,int *NN){ if(y-x>1) { int m=x+(y-x)/2; int p=x,q=m,i=x; merge_sort(AA,x,m,NN); merge_sort(AA,m,y,NN); while(p<m||q<y) { if(q>=y||(p<m&&A[p]<=A[q]))NN[i++]=A[p++];//如果其中有一个为空的话,要判断正确, else NN[i++]=A[q++],cnt+=m-p;//加入到了NN数组内的数字一定是比没有加入里面的小,因为,NN里面的都是排好序了的。所以m-p即为所求 } for(i=x;i<y;i++)A[i]=NN[i];//将值附过去就可以了 }}int main() { while(~scanf("%d",&n),n) { cnt=0; for(int i=0; i<n; i++) { scanf("%d",&A[i]); } merge_sort(A,0,n,T); printf("%I64d\n",cnt); } return 0;}
0 0
- poj2299 Ultra-QuickSort
- (POJ2299)Ultra-QuickSort
- poj2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- POJ2299-Ultra-QuickSort
- POJ2299:Ultra-QuickSort
- poj2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- poj2299--Ultra-QuickSort
- poj2299—Ultra-QuickSort
- POJ2299 Ultra-QuickSort
- POJ2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- POJ2299 Ultra-QuickSort
- POJ2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- sgu158
- POJ3979
- 背单词App开发日记1
- 热身赛
- MySQL导入及常用命令
- POJ2299 Ultra-QuickSort
- Android Studio中使用Android5.0新特性CardView
- leetCode 73.Set Matrix Zeroes (矩阵置0) 解题思路和方法
- 【Qt移植到linux】问题6 file not recognized is a directory
- Java HashMap 深入源码分析
- 脑在IDE模式下能正常启动,改成AHCI后蓝屏——解决方法
- Android开发实战之Intent传递对象(Serializable和Parcelable)
- 出现undefined reference to `forkpty' 错误解决方法
- 第三十七讲|用循环处理文字