zoukankan      html  css  js  c++  java
  • 火柴排队sol

    火柴排队
    贪心地考虑将两个序列排序后对应应该最优
    将一个序列中在另一个序列中对应位置维护
    最后求逆序对个数

    #include<bits/stdc++.h>
    #define fi first
    #define se second
    #define pb push_back
    #define mp make_pair
    #define SZ(x) ((int)x.size())
    #define ALL(x) x.begin(),x.end()
    #define U(i,u) for(register int i=head[u];i;i=nxt[i])
    #define rep(i,a,b) for(register int i=(a);i<=(b);++i)
    #define per(i,a,b) for(register int i=(a);i>=(b);--i)
    using namespace std;
    typedef long double ld;
    typedef long long ll;
    typedef unsigned int ui;
    typedef pair<int,int> PII;
    typedef vector<int> VI;
    template<class T> inline void read(T &x){
    	x=0;char c=getchar();int f=1;
    	while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
    	while(isdigit(c)){x=x*10+c-'0';c=getchar();}x*=f;
    }
    template<class T> inline void cmin(T &x, T y){x=x<y?x:y;}
    template<class T> inline void cmax(T &x, T y){x=x>y?x:y;}
    const int N=100001;
    const int P=99999997;
    int n,to[N],ans;
    struct node{
    	int x,id;
    }a[N],b[N];
    bool cmp(node aa,node bb){
    	return aa.x<bb.x;
    }
    int c[N];
    int lowbit(int x){return x&(-x);}
    void add(int x,int dt){
    	while(x<=n){
    		c[x]=(c[x]+dt)%P;
    		x+=lowbit(x);
    	}
    }
    int sum(int x){
    	int ret=0;while(x){
    		ret=(ret+c[x])%P;
    		x-=lowbit(x);
    	}return ret;
    }
    int main(){
    	read(n);rep(i,1,n)read(a[i].x),a[i].id=i;rep(i,1,n)read(b[i].x),b[i].id=i;
    	sort(a+1,a+n+1,cmp);sort(b+1,b+n+1,cmp);
    	rep(i,1,n){
    		to[a[i].id]=b[i].id;
    	}
    	rep(i,1,n){
    		ans=(ans+sum(n)-sum(to[i]))%P;
    		add(to[i],1);
    	}
    	printf("%d",ans);
    	return 0;
    }
    
  • 相关阅读:
    LeetCode 42. Trapping Rain Water
    LeetCode 209. Minimum Size Subarray Sum
    LeetCode 50. Pow(x, n)
    LeetCode 80. Remove Duplicates from Sorted Array II
    Window10 激活
    Premiere 关键帧缩放
    AE 「酷酷的藤」特效字幕制作方法
    51Talk第一天 培训系列1
    Premiere 视频转场
    Premiere 暴徒生活Thug Life
  • 原文地址:https://www.cnblogs.com/hangzz/p/13387256.html
Copyright © 2011-2022 走看看