博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hzwer与逆序对
阅读量:5917 次
发布时间:2019-06-19

本文共 1539 字,大约阅读时间需要 5 分钟。

codevs——4163 hzwer与逆序对

 貌似这个题和上个题是一样的((⊙o⊙)…)

 时间限制: 1 s
 空间限制: 256000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述 
Description

hzwer在研究逆序对。

对于数列{a},如果有序数对(I,j)满足:i<j,a[i]>a[j],则(i,j)是一对逆序对。

给定一个数列{a},求逆序对个数。

输入数据较大,请使用scanf代替cin读入。

*为防卡评测,时限调低至1s

 

输入描述 
Input Description

第一行一个数n,表示{a}有n个元素。

接下来n个数,描述{a}。

 

输出描述 
Output Description

一个数,表示逆序对个数。

 

样例输入 
Sample Input

5

3 1 5 2 4

 

样例输出 
Sample Output

4

数据范围及提示 
Data Size & Hint

对于10%数据,1<=n<=100.

对于20%数据,1<=n<=10000.

对于30%数据,1<=n<=100000.

对于100%数据,1<=n<=1000000,1<=a[i]<=10^8.

tips:我没有想故意卡你们时限。一点这样的意思都没有。你们不要听风就是雨……

 

比赛已结束 详细解析见题解

 

代码:

好像。。。。

这是个什么鬼???!!!

 

唉,下面给出正确代码。。。

#include
#include
#include
#define N 1000001using namespace std;int n,a[N],tmp[N];long long ans;int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f;}void gsort(int l,int r){ if(l==r) return ; int mid=(l+r)/2; gsort(l,mid);gsort(mid+1,r); int i=l,j=mid+1,k=l; while(i<=mid&&j<=r) { if(a[i]<=a[j]) tmp[k++]=a[i++]; else { ans+=(long long)(mid-i+1); tmp[k++]=a[j++]; } } while(i<=mid) tmp[k++]=a[i++]; while(j<=r) tmp[k++]=a[j++]; for(int i=l;i<=r;i++) a[i]=tmp[i]; }int main(){ n=read(); for(int i=1;i<=n;i++) a[i]=read(); gsort(1,n); cout<

 

转载于:https://www.cnblogs.com/z360/p/6931013.html

你可能感兴趣的文章
双向BFS
查看>>
centos 网站目录权限参考
查看>>
引入间接隔离变化(三)
查看>>
VMworld 2011第三天小记
查看>>
统一沟通-技巧-4-让国内域名提供商“提供”SRV记录
查看>>
cocos2d-x 3.0事件机制及用户输入
查看>>
FMS3.5的安装使用
查看>>
silverlight元素FrameworkElement.LayoutUpdated布局变化事件
查看>>
FUHLEN/富勒 U79/U79G节能系列/U系列无线2.4G接收器-淘宝网
查看>>
iPhone 5/iOS 6 前端开发指南
查看>>
比亚迪速锐F3专用夏季座套 夏天坐垫 四季坐套
查看>>
C++ 数字转换为string类型
查看>>
取证学习资料DVD
查看>>
等比缩放图片大小
查看>>
vim下使用YouCompleteMe实现代码提示、补全以及跳转设置
查看>>
高性能优化Web前端
查看>>
Google研究员Ilya Sutskever:成功训练LDNN的13点建议
查看>>
【转】Java并发编程:volatile关键字解析
查看>>
Oracle数据库常用函数使用--持续更新中
查看>>
SQL Server中sys.syslogin中updatedate字段的浅析
查看>>