zoukankan      html  css  js  c++  java
  • 树状树组离散化求逆序对模板

    #include <iostream>
    #include <cstring>
    #include <stack>
    #include <cstdio>
    #include <cmath>
    #include <queue>
    #include <algorithm>
    #include <vector>
    #include <set>
    #include <map>
    using namespace std;
    #define ll long long
    const int  N=500005;
    int a[N],b[N],c[N],d[N],n,m=0;
    void discrete()
    {
        for(int i=1;i<=n;i++)
            d[i]=a[i];
        sort(d+1,d+n+1);
        for(int i=1;i<=n;i++)
        {
            if(i==1||d[i]!=d[i-1])
                b[++m]=d[i];    
        }    
    }
    int query(int x)
    {
        return lower_bound(b+1,b+m+1,x)-b;
    }
    int ask(int x)
    {
        int ans=0;
        for(;x;x-=x&-x)
        {
            ans=ans+c[x];
        }
        return ans;
    }
    void add(int x,int y)
    {
        for(;x<=N-1;x+=x&-x)
            c[x]+=y; 
    }
    int main()
    {
        ll ans=0;
        cin>>n;
          for(int i=1;i<=n;i++)
          {
              scanf("%d",&a[i]);
        }
        discrete();
        for(int i=1;i<=n;i++)
        {
            add(query(a[i]),1);
            ans+=i-ask(query(a[i]));
        }
        cout<<ans<<"
    ";
        return 0;
    }
  • 相关阅读:
    SSM环境搭建
    spring 开发 Tars
    Tars --- Hello World
    Java IO流
    Java集合
    常用类
    Pwn With longjmp
    格式化字符串漏洞利用实战之 njctf-decoder
    一步一步 Pwn RouterOS之ctf题练手
    srop实战
  • 原文地址:https://www.cnblogs.com/hh13579/p/11384484.html
Copyright © 2011-2022 走看看