前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1688 求逆序对

1688 求逆序对

作者头像
attack
发布2018-04-12 15:20:21
6690
发布2018-04-12 15:20:21
举报
文章被收录于专栏:数据结构与算法

1688 求逆序对

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题目描述 Description

给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目

数据范围:N<=105。Ai<=105。时间限制为1s。

输入描述 Input Description

第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数。

输出描述 Output Description

所有逆序对总数.

样例输入 Sample Input

4

3

2

3

2

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

代码语言:javascript
复制
 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 long long int a[1000001];
 5 long long int tot;
 6 long long int n;
 7 long long int ans[1000001];//储存结果 
 8 long long int now;//表示已经有多少个结果 
 9 void f(long long int s,long long int t)
10 {
11     //int mid,i,j,k;
12     if(s==t)return;
13     int mid=(s+t)/2;
14     f(s,mid);
15     f(mid+1,t);
16     long long int i=s;
17     long long int j=mid+1;
18     now=s;
19     while(i<=mid&&j<=t)
20     {
21         if(a[i]<=a[j])
22         {
23             //tot++;
24         
25             ans[now]=a[i];
26             i++;
27             now++;
28         }
29         else
30         {    
31             tot=tot+mid-i+1;
32             ans[now]=a[j];
33             j++;
34             now++;
35         }
36     }
37     while(i<=mid)
38     {
39         ans[now]=a[i];
40         i++;
41         now++;
42     }
43     while(j<=t)
44     {
45         ans[now]=a[j];
46         j++;
47         now++;
48     }
49     for (i=s;i<=t;i++)//把合并后的有序数据重新放回a数组
50         a[i] = ans[i];
51 
52 }
53 int main()
54 {
55     long long int n;
56     cin>>n;
57     for(int i=1;i<=n;i++)
58         cin>>a[i];
59     f(1,n);
60     cout<<tot;
61     /*for(int i=1;i<=n;i++)
62     {
63         cout<<a[i]<<" ";
64     }*/
65     return 0;
66 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-03-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1688 求逆序对
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档