UVA1428

来源:互联网 发布:汉服复原小组淘宝 编辑:程序博客网 时间:2024/05/18 20:13

n个人,从左到右排列,每个人都有一个不一样技能值 arr[i], 每场比赛3个人: 两名选手, 一名裁判。 裁判必须在两名选手中间, 并且技能值也在两名选手之间, 问一共能组织多少种比赛。

树状数组的基本应用。

#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define maxn 100010using namespace std;LL left[maxn],c[maxn],arr[maxn];int lowbit(int x){    return x&(-x);}LL sum(int i){    LL sum=0;    while(i>0)    {        sum+=c[i];        i-=lowbit(i);    }    return sum;}void add(int i,LL x){    while(i<maxn)    {        c[i]+=x;        i+=lowbit(i);    }}int main(){    int cas,n;    scanf("%d",&cas);    while(cas--)    {        scanf("%d",&n);        memset(c,0,sizeof(c));        for(int i=0; i<n; i++)        {            scanf("%d",&arr[i]);            left[i]=0;        }        for(int i=0; i<n; i++)        {            left[i]=sum(arr[i]);            add(arr[i],1);        }       LL ans = 0;       memset(c,0,sizeof(c));       for(int i=n-1; i>=0; i--)       {           LL d=sum(arr[i]);           add(arr[i],1);           ans+=(left[i]*(n-i-1-d)+d*(LL)((LL)i-left[i]));       }       printf("%lld\n",ans);    }    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 周期性口腔溃疡是什么原因 口腔溃疡是怎么引起的 口腔反复溃疡 口腔溃疡是怎么回事 口腔溃疡经常发作是什么原因 经常口腔溃疡的原因 经常性口腔溃疡是什么原因 总是口腔溃疡是什么原因 口腔溃疡要吃什么 老长口腔溃疡是什么原因 常年口腔溃疡 一直口腔溃疡是什么原因 口腔溃疡传染不 口腔溃疡吃点什么好 口腔溃疡的症状是什么 容易长口腔溃疡是什么原因 为什么会长口腔溃疡 口腔溃疡长期不愈是什么原因 长期长口腔溃疡是什么原因 长期口腔溃疡是什么原因 口腔溃疡是什么原因造成的 嘴里经常口腔溃疡是什么原因 口腔溃疡的发病原因 经常性的口腔溃疡 反复性口腔溃疡 怎么会得口腔溃疡 口腔溃疡会引起发烧吗 口腔溃疡怎么引起的 口腔容易溃疡是什么原因 口腔溃疡反反复复是什么原因 口腔溃疡用什么好 经常得口腔溃疡是什么原因 口腔溃疡如何快速好 长口腔溃疡的原因 口腔溃疡是缺什么 引起口腔溃疡的原因有哪些 口腔溃疡吃什么好得快 总口腔溃疡是什么原因 口腔溃疡一直不好是什么原因 口腔溃疡是怎样引起的 口腔上颚溃疡的原因