poj 2299 Ultra-QuickSort 归并排序(求逆序数模板)
来源:互联网 发布:淘宝卖家怎么看投诉 编辑:程序博客网 时间:2024/06/05 19:25
#include<cstdio>int a[600000],temp[600000],n;long long sum;//结果可能很大void mergeArray(int l,int r)//归并{ int lStart = l,lEnd = (l+r)/2, rStart = (l+r)/2+1,rEnd = r, i1 = 0; while(lStart<=lEnd&&rStart<=rEnd) { if(a[lStart]<=a[rStart]) { temp[i1] = a[lStart]; lStart++; i1++; } else { sum+=(long long)(lEnd-lStart+1);//求逆序数 temp[i1] = a[rStart]; rStart++; i1++; } } for(int i=lStart;i<=lEnd;i++) { temp[i1] = a[i]; i1++; } for(int i=rStart;i<=rEnd;i++) { temp[i1] = a[i]; i1++; } for(int i=l;i<=r;i++) a[i] = temp[i-l];}void mergeSort(int l,int r)//二分{ if(l<r) { mergeSort(l,(r+l)/2); mergeSort((r+l)/2+1,r); mergeArray(l,r); }}int main(){ while(scanf("%d",&n)&&n) { sum = 0; for(int i=0;i<n;i++) scanf("%d",&a[i]); mergeSort(0,n-1); printf("%I64d\n",sum); } return 0;}
0 0
- POJ 2299 Ultra-QuickSort(归并排序求逆序数)
- 2299 Poj 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 【归并排序求逆序数 OR 树状数组求逆序数】
- poj 2299 Ultra-QuickSort 线段树求逆序数+离散化||归并排序求逆序数
- POJ2299 Ultra-QuickSort (归并排序求逆序数模板)
- poj-2299 Ultra—QuickSort(归并排序求逆序数)
- poj(2299)——Ultra-QuickSort(归并排序求逆序数)
- ms-windows-store
- PHP数据类型
- 学PHP的好处
- 身份证转换工具类(Java)
- 安卓入门 之 开发环境搭建
- poj 2299 Ultra-QuickSort 归并排序(求逆序数模板)
- ubuntu 系统备份
- 【版本控制】git学习笔记(三)
- RDW关于制造商委外生产的十三个要求
- POSIX 线程详解
- x86虚拟化之迷
- 文章标题
- Visual Studio常用快捷键
- 【学习Android】Keyboard.class类源码注解