博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-2492 Ping pong
阅读量:6909 次
发布时间:2019-06-27

本文共 1145 字,大约阅读时间需要 3 分钟。

训练指南上面的题目,树状数组,给出一个序列,从左到右表示每个人的值,问存在有多少对{i,j,k}满足Xi<Yj<Zk。

1 #include
2 #include
3 const int maxval=100000+5; 4 const int maxn=20000; 5 int val[maxn]; 6 int c[maxn]; 7 int b[maxn]; 8 int flag[maxval]; 9 int n;10 int lowbit(int x)11 {12 return x&(-x);13 }14 int sum(int x)15 {16 int ret=0;17 while(x>0)18 {19 ret+=flag[x];20 x-=lowbit(x);21 }22 return ret;23 }24 void add(int x,int d)25 {26 while(x<=maxval)27 {28 flag[x]+=d;29 x+=lowbit(x);30 }31 }32 int main()33 {34 int t;35 scanf("%d",&t);36 while(t--)37 {38 scanf("%d",&n);39 memset(flag,0,sizeof(flag));40 for(int i=1;i<=n;i++)41 {42 scanf("%d",&val[i]);43 add(val[i],1);44 c[i]=sum(val[i]-1);45 }46 for(int i=1;i<=n;i++)47 b[i]=sum(val[i]-1)-c[i];48 long long ans=0;49 for(int i=1;i<=n;i++)50 ans+=c[i]*(n-i-b[i])+(i-1-c[i])*b[i];51 printf("%I64d\n",ans);52 }53 return 0;54 }

 

转载于:https://www.cnblogs.com/sooflow/p/3224142.html

你可能感兴趣的文章
我的友情链接
查看>>
我的友情链接
查看>>
Java学习笔记1-初始化的顺序
查看>>
开源Xen是如何衰落的?
查看>>
Pivot Table系列之切片器 (Slicer)
查看>>
windows下安装mysql5.6及基本命令
查看>>
jsp的九个内置对象简介
查看>>
用户如何获得***服务---步骤与效果
查看>>
学习沟通技巧--- SOFTEN法则与SOLER法则
查看>>
用户密码重设对EFS的影响
查看>>
基于mdrill的大数据分析
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
gitlab web hooks 应用
查看>>
STM32的停机模式与唤醒
查看>>
安全运维之端口安全
查看>>
【转载】什么是站点,Active Directory系列之十一
查看>>
Red Hat Enterprise Liunx6 配置apache 全攻略
查看>>
CentOS 5.5下LVM的分区管理
查看>>
[Template]HTML Template 简介
查看>>