zoukankan      html  css  js  c++  java
  • 1688 求逆序对

    1688 求逆序对

     

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

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

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

     

    输入描述 Input Description

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

    输出描述 Output Description

    所有逆序对总数.

    样例输入 Sample Input

    4

    3

    2

    3

    2

    样例输出 Sample Output

    3

    数据范围及提示 Data Size & Hint
     
     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 }
  • 相关阅读:
    数据库字段说明查询
    MUI 微信支付代码
    数据库 批量删除表
    c# 微信开发 《内容回复或事件触发》
    C# 微信开发 《验证签名》
    SQL SERVER占用CPU过高排查和优化
    类属性验证简单说明
    地图纠偏
    区块链-6一个故事告诉你比特币的原理及运作机制
    区块链-5区块链技术入门,涉及哪些编程语言?
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6613214.html
Copyright © 2011-2022 走看看