逆序对模板
来源:互联网 发布:高分三号 数据预处理 编辑:程序博客网 时间:2024/06/05 21:04
模板一:
#include<iostream>using namespace std;int a[1000001],b[1000001],rr,tem,t,s;__int64 ans;void merg(int ll,int l,int r){rr=l-1,tem=ll,t=l,s=ll;while(ll<=rr&&t<=r)if(a[ll]<=a[t])b[tem++]=a[ll++];else {ans+=l-ll;b[tem++]=a[t++];}while(ll<=rr) b[tem++]=a[ll++];while(t<=r) b[tem++]=a[t++];for(;s<=r;s++) a[s]=b[s];}void mergsort(int l,int r){if(l<r){int mid=(l+r)/2;mergsort(l,mid);mergsort(mid+1,r);merg(l,mid+1,r);}}void main(){int n,i;while(scanf("%d",&n)!=EOF){for(i=1;i<=n;i++) scanf("%d",&a[i]);ans=0;mergsort(1,n);printf("%I64d\n",ans);}}
#include<iostream>using namespace std;int a[1000001],b[1000001],rr,tem,t,s;__int64 ans;void merg(int ll,int l,int r){rr=l-1,tem=ll,t=l,s=ll;while(ll<=rr&&t<=r)if(a[ll]<=a[t])b[tem++]=a[ll++];else {ans+=l-ll;b[tem++]=a[t++];}while(ll<=rr) b[tem++]=a[ll++];while(t<=r) b[tem++]=a[t++];for(;s<=r;s++) a[s]=b[s];}void mergsort(int l,int r){if(l<r){int mid=(l+r)/2;mergsort(l,mid);mergsort(mid+1,r);merg(l,mid+1,r);}}void main(){int n,i;while(scanf("%d",&n)!=EOF){for(i=1;i<=n;i++) scanf("%d",&a[i]);ans=0;mergsort(1,n);printf("%I64d\n",ans);}}
- 逆序对模板
- 归并求逆序对【模板】
- 归并模板& P1908 逆序对
- 逆序对模板及其运用
- HDOJ 4911-Inversion【逆序对模板】
- 树状数组求逆序对模板
- 【poj1804】【poj2299】【模板】求逆序对
- 【模板】树状数组求逆序对
- 光荣的梦想(逆序对模板)
- 九度OJ 1348-数组中的逆序对【逆序对模板】
- POJ 2299 Ultra-QuickSort 模板 求逆序对
- 逆序数 & 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 正定、负定矩阵的猜想——logm and expm
- C++语言中引用机制的实现分析
- 全局变量重定位和KernelRelocate函数
- ruby常规
- 通过分析网络数据包来理解DCOM协议(二)
- 逆序对模板
- C++书单
- 浏览器性能评测报告(二):评测工具
- Rational Rose 2003 下载、破解及安装方法(图文)
- 定制 WebBrowser 控件
- Android WebView学习
- S3C2440裸机驱动--MMU源码分析
- IOS5.0的release升级了
- 编程思想基本概念之函数式编程(Functional Programming)