高效算法设计专项:UVa 10810
2013-04-28 21:01
246 查看
就是求序列的逆序数,用入门经典上用归并排序求逆序数即可。需要注意结果用int会爆,所以得用longlong。
#include <iostream> #include <cstdio> using namespace std; #define M 500010 typedef long long LL; LL a[M],t[M],cnt; int n; void merge_sort(LL *a,int x,int y,LL *t) { if(y-x>1) { int m=x+(y-x)/2; int p=x,q=m,i=x; merge_sort(a,x,m,t); merge_sort(a,m,y,t); while(p<m||q<y) { if(q>=y||(p<m&&a[p]<=a[q])) t[i++]=a[p++]; else { t[i++]=a[q++]; cnt+=(m-p); } } for(i=x;i<y;i++) a[i]=t[i]; } } int main() { freopen("in.txt","r",stdin); while(cin>>n) { if(!n) break; for(int i=0;i<n;i++) cin>>a[i]; cnt=0; merge_sort(a,0,n,t); cout<<cnt<<endl; } return 0; }
相关文章推荐
- 高效算法设计专项:UVa 10691
- 高效算法设计专项:UVa 11572
- 高效算法设计专项:UVa 10730
- 高效算法设计专项:UVa 10125
- 高效算法设计专项:UVa 10827
- 高效算法设计专项:UVa 10391
- 高效算法设计专项:UVa 10535
- 高效算法设计专项:UVa 11054
- 【高效算法设计——递归】 UVa 12627 Erratic Expansion
- 【高效算法设计——双向扫描】 UVa 1442 Cave
- 【高效算法设计——递归】 UVa 1608 Non-boring sequences
- ( 设计高效算法 ) 年龄排序 Age Sort Uva 11462
- (高效算法设计)之高维问题 废料堆 Garbage heap Uva 10755
- 【高效算法设计——跳跃枚举】Uva 11093 Just Finish it up
- 【高效算法设计——滑动窗口】 UVa 12174 Shuffle
- 高效算法设计专项:LA 4726
- 【高效算法设计——等价转换】UVa 11054
- 【高效算法设计——滑动窗口】UVa 11572 Unique Snowflakes
- 【高效算法设计】UVa120 Stack of Flapjacks
- 高效算法设计专项:LA 2689