zoukankan      html  css  js  c++  java
  • TTTTTTTTTTT LA 4329 BIT模版

    题意:

    有n个打乒乓球的人,住在一排房子内,以房子的顺序从做到由,每个人都有一个不同的乒乓球等级ai。每次比赛需要三人,两人比赛和一人裁判,裁判必须居住在两个比赛者之间,且等级必须也在两个人之间。问最多可以进行多少场比赛。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <cmath>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <map>
    #include <algorithm>
    #include <set>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long Ull;
    #define MM(a,b) memset(a,b,sizeof(a));
    const double eps = 1e-10;
    const int inf = 0x3f3f3f3f;
    const double pi=acos(-1);
    const int maxn=100000+5;
    
    int v[maxn],c[maxn],l[maxn],r[maxn],n;
    int lowbit(int x)
    {
        return x&(-x);
    }
    
    void add(int x,int d)
    {
        while(x<=maxn)
        {
            c[x]+=d;x+=lowbit(x);
        }
    }
    
    int sum(int x)
    {
        int ret=0;
        while(x>0)
        {
            ret+=c[x];x-=lowbit(x);
        }
        return ret;
    }
    
    int main()
    {
        int cas;
        scanf("%d",&cas);
        while(cas--)
        {
            MM(c,0);
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&v[i]);
                add(v[i],1);
                l[i]=sum(v[i]-1);//复杂度nlogn
            }//左边中有多少个是<=该数值的
            MM(c,0);
            for(int i=n;i>=1;i--)
            {
                add(v[i],1);
                r[i]=sum(v[i]-1);
            }//右边中是多少个>=该数值的
            ll ans=0;
            for(int i=1;i<=n;i++)
                ans+=l[i]*(n-i-r[i])+(i-1-l[i])*r[i];
            printf("%lld
    ",ans);
        }
        return 0;
    }
    

     分析:树状数组枚举点是n,BIT可以保证再logn的时间内实现单点跟新和查询区间和

  • 相关阅读:
    管理中的“变”与“不变”
    软件项目需求分析与管理的十大疑问
    小商家也要有O2O思维
    互联网时代CIO生存法则
    浅谈项目经理与部门经理之间的关系
    沃尔玛:“最后一公里”的致命伤
    大数据分析案例:永远别忘记天气这个变量
    IT项目中的6类知识转移
    C
    linu入门
  • 原文地址:https://www.cnblogs.com/smilesundream/p/5408076.html
Copyright © 2011-2022 走看看