pku hdu pingpong
来源:互联网 发布:注册淘宝店铺流程 编辑:程序博客网 时间:2024/06/05 02:07
树状数组
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct TT{ long long num,id;}a[100010];int n;long long num[100010],tree[100010],tree2[100010];bool cmp(TT a,TT b){ return a.num<b.num;}int lowbit(int n){ return n&(-n);}long long getsum(int x)//左边比X小的{ long long sum=0; for(int i=x;i>=1;i-=lowbit(i)) sum+=tree[i]; return sum;}void update(int x){ for(int i=x;i<=n;i+=lowbit(i)) tree[i]++;}long long getsum2(int x)//左边比X大的{ long long sum=0; for(int i=x;i<=n;i+=lowbit(i)) sum+=tree2[i]; return sum;}void update2(int x){ for(int i=x;i>=1;i-=lowbit(i)) tree2[i]++;}int main(){ int T; scanf("%d",&T); while(T--) { memset(tree,0,sizeof(tree)); memset(tree2,0,sizeof(tree2)); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i].num); a[i].id=i; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) num[a[i].id]=i; long long sum=0; for(int i=1;i<=n;i++) { int x=num[i]; long long t1=getsum(x);//左边比他小的 update(x); long long t2=getsum2(x); update2(x);//左边比他大的 long long t3=num[i]-t1-1;//右边比他小的 long long t4=(n-num[i])-t2;//右边比他大的 sum+=t1*t4+t2*t3; } cout<<sum<<endl; } return 0;}
- pku hdu pingpong
- hdu 2491 pingpong
- HDU 2492 PingPong
- HDU 2492 PingPong (树状数组)
- POJ 3928 & hdu 2492 & Uva1428 PingPong 【树状数组】
- hdu 1166 && PKU 3264
- PKU 3487 && HDU 1914
- pku hdu Minimal Ratio Tree
- Android Pingpong漏洞解析
- PKU 2481 Cows & PKU 2352 Stars & HDU 1541 Stars
- HDU和PKU的一些KMP题
- 关于PingPong缓冲的困惑
- LoRa开发7:PingPong系统
- Run the MPI PingPong benchmark
- HDU 1053 && PKU 1521 Entropy (PKU 3253, HDU 2527同解)
- PKU 2777 && PKU 3468 && HDU 1698【线段树:区间修改值】
- 【转】unity5 animation 如何实现pingpong效果
- 【树状数组--思维】poj 3928 pingpong
- QtGui学习笔记初始
- struts
- Foursquare 重组多项功能
- Apache+Tomcat+jk_mod整合实战
- js字符串全部替换replaceAll
- pku hdu pingpong
- 谷歌推出新安全措施 保护Gmail等服务用户
- pku hdu Minimal Ratio Tree
- 【编程语言】jsp--企业级开发入门
- 2010-09-21北大创新工场笔试大题
- How to dev Gstreamer In Windows
- jquery与dom对象相互转换
- bfcommand Build OttawaADR-Midday
- ubuntu 动态桌面xml文件生成脚本