zoukankan      html  css  js  c++  java
  • 离散化&&逆序数对

    题目:http://www.fjutacm.com/Problem.jsp?pid=3087

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define lowbit(x) x&(-x)
    int c[100100], n;
    long long F[100100], a[100100];
    void updata(int i, int v)
    {
        while(i<=n)
        {
            c[i]+=v;
            i+=lowbit(i);
        }
    }
    int getsum(int i)
    {
        int sum=0;
        while(i>0)
        {
            sum+=c[i];
            i-=lowbit(i);
        }
        return sum;
    }
    int main( )
    {
        int i, j, T;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d", &n);
            long long ans=0;
            memset(c, 0 ,sizeof(c));
            n++;
            a[1]=0;
            for(i=2; i<=n; i++)
            {
                scanf("%lld", &a[i]);
                a[i]+=a[i-1];
            }
            for(i=1; i<=n; i++)
            {
                a[i]=a[i]*10010+i;///防止数字重复
                F[i]=a[i];
            }
            sort(a+1, a+n+1);
            for(i=1; i<=n; i++)
                F[i]=lower_bound(a+1, a+1+n, F[i])-a;///寻找该数字在的位置,那个位置就是改位置新的值
            for(i=1; i<=n; i++)
            {
                ans+=getsum(F[i]);
                updata(F[i], 1);
            }
            printf("%lld
    ", ans);
        }
    }
    辣鸡代码
  • 相关阅读:
    golang-----giao起来
    Django-----你醒了吗?
    linux
    dapper之连接数据库(Oracle,SQL Server,MySql)
    mongodb 物理删除数据
    一生难得的偶遇
    奇怪的电话
    我的魔兽争霸
    第四章 吃饭
    第三章 百花谷
  • 原文地址:https://www.cnblogs.com/DCD112358/p/8530775.html
Copyright © 2011-2022 走看看