zoukankan      html  css  js  c++  java
  • UVALive 6508 Permutation Graphs

    补这一道题,当时题意没有看懂,后来看懂了题意
    给你n个点。然后又两个序列,然后把这两个序列中相等数连接起来,每两条连线中间看有几个点。求全部连线中间的点的个数和。


    序列{2 , 5 , 4 , 1 ,3}和{1 ,5。3 ,2 ,4}的连接图例如以下

    连接图
    比方说1-1和4-4中间的点是5。3,2
    显而易见这是求逆序对的个数
    代入树状数组模板就可以

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    #define N 111111
    int bit[N];
    int a[N];
    int pos[N];
    int n;
    
    int sum(int i) {
        int s=0;
        while(i>0) {
            s+=bit[i];
            i=i&(i-1);
        }
        return s;
    }
    
    void add(int i,int xx) {
        while(i<=n) {
            bit[i]+=xx;
            i+=i&-i;
        }
    }
    
    int main() {
        int T;
        scanf("%d",&T);
            while(T--) {
            int ans  = 0;
            memset(bit,0,sizeof(bit));
            scanf("%d",&n);
            int x;
            for(int i=1; i<=n; i++) {
                scanf("%d",&x);
                pos[x] = i;
            }
            for(int i=0; i<n; i++) {
                scanf("%d",&x);
                ans+=i-sum(pos[x]);
                add(pos[x],1);
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    
  • 相关阅读:
    Spring 之 BeanFactory 源码
    pig first trial
    分布
    Think Stats CDF, mayplot
    think stat  4_1, 4_3
    python 指数分布的模拟 expovariate
    [转载]巴洛克和哥特式建筑的区别
    统计中的过采样
    Python iterator/generator
    python zip
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5328788.html
Copyright © 2011-2022 走看看