#1141 : 二分·归并排序之逆序对(归并排序)
来源:互联网 发布:jre windows x64.exe 编辑:程序博客网 时间:2024/04/28 23:09
#1141 : 二分·归并排序之逆序对
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
在上一回、上上回以及上上上回里我们知道Nettle在玩《艦これ》。经过了一番苦战之后,Nettle又获得了的很多很多的船。
这一天Nettle在检查自己的舰队列表:
[list.png]
我们可以看到,船默认排序是以等级为参数。但实际上一个船的火力值和等级的关系并不大,所以会存在A船比B船等级高,但是A船火力却低于B船这样的情况。比如上图中77级的飞龙改二火力就小于55级的夕立改二。
现在Nettle将按照等级高低的顺序给出所有船的火力值,请你计算出一共有多少对船满足上面提到的这种情况。
提示:火力高才是猛!
输入
第1行:1个整数N。N表示舰船数量, 1≤N≤100,000
第2行:N个整数,第i个数表示等级第i低的船的火力值a[i],1≤a[i]≤2^31-1。
输出
第1行:一个整数,表示有多少对船满足“A船比B船等级高,但是A船火力低于B船”。
样例输入
10
1559614248 709366232 500801802 128741032 1669935692 1993231896 369000208 381379206 962247088 237855491
样例输出
27
#include<cstdio>#include<algorithm>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#define lowbit(i) (i&(-i))#define _(x) printf("%d\n",x)const int maxn = 3e6+200;const LL inf = 1LL << 34;LL a[maxn],tmp[maxn];LL ans;void merge(int l,int mid,int r){ int i,j,k; i=l;j=mid+1;k=l; while(i<=mid&&j<=r){ if(a[i]<=a[j]){ tmp[k++]=a[i++]; } else { ans+=mid-i+1; tmp[k++]=a[j++]; } } while(i<=mid)tmp[k++]=a[i++]; while(j<= r) tmp[k++]=a[j++]; for(i=l;i<=r;i++)a[i]=tmp[i];}void merge_sort(int x,int y){ if(y<=x)return ; int mid = y+x>>1; merge_sort(x,mid); merge_sort(mid+1,y); merge(x,mid,y);}int main(){ int n; while(~scanf("%d",&n)){ for(int i=0;i<n;i++){ scanf("%lld",&a[i]); } ans = 0; merge_sort(0,n-1); printf("%lld\n",ans); } return 0;}
0 0
- #1141 : 二分·归并排序之逆序对(归并排序)
- #1141 : 二分·归并排序之逆序对
- #1141 : 二分·归并排序之逆序对
- hihoCoder 1141 二分·归并排序之逆序对
- hihocoder 1141 : 二分·归并排序之逆序对
- hihocoder #1141 : 二分·归并排序之逆序对
- HIHO #1141 : 二分·归并排序之逆序对
- 【hihocoder】1141 : 二分·归并排序之逆序对
- #1141 : 二分·归并排序之逆序对
- [HiHoCoder]二分·归并排序之逆序对
- hihoCoder_二分·归并排序之逆序对
- 【hiho39】二分·归并排序之逆序对
- hiho 39 二分·归并排序之逆序对
- 归并排序之逆序对
- 逆序对 (归并排序)
- 逆序对 归并排序
- 归并排序 & 逆序对
- 归并排序--逆序对
- T001-UT001-0004
- 常用电平标准
- 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
- 通信系统为何调制和解调(第三次作业)
- C++中string的trim实现函数
- #1141 : 二分·归并排序之逆序对(归并排序)
- T001-UT001-0005
- 黑马程序员——Java基础查找算法:顺序查找和二分查找
- Synchronized
- 统计字符次数
- 体验OpenGL新版本
- android菜鸟之button事件的三种方式
- 鉴别毒水问题
- hdu 3001 Travelling 三进制状压Dp