hdu 2492

来源:互联网 发布:电信4g是什么网络模式 编辑:程序博客网 时间:2024/06/05 07:51

树状数组

#include <iostream>#include <string.h>#include <stdio.h>using namespace std;const int maxn1=100000;const int maxn2=20010;int c[maxn1+10],v[maxn2],l[maxn2],r[maxn2];int n;int lowbit(int x){return x&(-x);}void add(int x){while(x<=maxn1)//要细心{c[x]+=1;x+=lowbit(x);}}int sum(int x){int tot=0;while(x>0){tot+=c[x];x-=lowbit(x);}return tot;}int main(){int t;cin>>t;while(t--){scanf("%d",&n);int i,a;for(i=1;i<=n;i++) scanf("%d",&v[i]);memset(c,0,sizeof(c));for(i=1;i<=n;i++){add(v[i]);l[i]=sum(v[i]-1);}memset(c,0,sizeof(c));for(i=n;i>0;i--){add(v[i]);r[i]=sum(v[i]-1);}long long tot=0;for(i=1;i<=n;i++){tot+=l[i]*(n-i-r[i])+(i-1-l[i])*r[i];}printf("%I64d\n",tot);}return 0;}


原创粉丝点击