• P1966 火柴排队


    //P1966 火柴排队
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int mod=99999997;
    const int mxn=1e6+5;
    int n;
    int /*a1[mxn],a2[mxn],d1[mxn],d2[mxn],*/c[mxn],r[mxn];
    struct ss{
        int v,num;
    }a[mxn],b[mxn];
    bool cmp(ss a,ss b){
        return a.v<b.v;
    }
    inline int lowbit(int x){
        return x&-x;
    }
    inline ll get(int x){
        ll sum=0;
        for(;x;x-=lowbit(x)){
            sum+=c[x];
            sum%=mod;
        }
        return sum%mod;
    }
    inline void motify(int x,int k){
        for(;x<=n;x+=lowbit(x)){
            c[x]+=k;
            c[x]%=mod;
        }
    }
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i].v);
            a[i].num=i;
    //        d1[i]=a1[i];
        }
        for(int i=1;i<=n;i++){
            scanf("%d",&b[i].v);
            b[i].num=i;
    //        d2[i]=a2[i]; 
        }
        sort(a+1,a+n+1,cmp);
        sort(b+1,b+n+1,cmp);
    /*    离散化求出a[i]是第几小 并不是第几个 
        int N1=unique(d1+1,d1+n+1)-d1-1;
        int N2=unique(d2+1,d2+n+1)-d2-1;
        for(int i=1;i<=n;i++){
            a1[i]=lower_bound(d1+1,d1+N1+1,a1[i])-d1;
        }
        for(int i=1;i<=n;i++){
            a2[i]=lower_bound(d2+1,d2+N2+1,a2[i])-d2;
        }*/
        for(int i=1;i<=n;i++){
            r[a[i].num]=b[i].num;
        }
        ll ans=0;
        for(int i=1;i<=n;i++){
            motify(r[i],1);
            ans+=i-get(r[i]);
            ans%=mod;
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    存储器多级结构
    649. Dota2 参议院
    pycharm安装第三方库失败
    python -m pip install --upgrade pip升级失败
    P1149 火柴棒等式
    HTTP详解
    ref与out
    EF查询数据库框架的搭建
    EF查询数据库框架的搭建
    css清除浮动
  • 原文地址:https://www.cnblogs.com/duojiaming/p/11760783.html
Copyright © 2020-2023  润新知