zoukankan      html  css  js  c++  java
  • sort it 树状数组+逆序对

    sum[i]是1-i所有1的和,而i-sum[a[i]]就是在a[i]后面的数,即在i之前出现,却比他大的数。1是加在a[i]上,即i实际应该放的位置。而c[i]是为sum做准备的

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<math.h>
     4 #include<iostream>
     5 #include<stdlib.h>
     6 #include<algorithm>
     7 #include<queue>
     8 #include<vector>
     9 #include<string>
    10 #include<set>
    11 #include<cctype>
    12 #include<sstream>
    13 #define mem(a) memset(a,0,sizeof(a))
    14 #define LL long long
    15 using namespace std;
    16 const int N=1e6+5;
    17 int a[N],c[N],n;
    18 int lowbit(int x)
    19 {
    20     return x&-x;
    21 }
    22 void add(int x,int a)
    23 {
    24     while(x<=n) c[x]+=a,x+=lowbit(x);
    25 }
    26 int sum(int x)
    27 {
    28     int ans=0;
    29     while(x)
    30     {
    31         ans+=c[x];
    32         x-=lowbit(x);
    33     }
    34     return ans;
    35 }
    36 int main()
    37 {
    38     while(~scanf("%d",&n))
    39     {
    40         mem(c);
    41         int ans=0;
    42         for(int i=1;i<=n;i++)
    43         {
    44            scanf("%d",&a[i]);
    45            add(a[i],1);
    46            ans+=i-sum(a[i]);
    47         }
    48         printf("%d
    ",ans);
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    MySQL5.6升级5.7步骤
    PG数据库学习随笔(1)
    MySQL 8017+版本的clone-plugin 应用
    AWS多元复制到EC2机器
    AWS告警优化
    mongo微服务搭建
    py执行数据库存储过程
    mysql temporary table表一个机智用法:
    记录ddl操作
    sql改写
  • 原文地址:https://www.cnblogs.com/XXrll/p/10305404.html
Copyright © 2011-2022 走看看