hdu2492 (树状数组)
来源:互联网 发布:手机投影电脑软件 编辑:程序博客网 时间:2024/05/17 22:09
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2492
题目大意:1-n 这n个数字杂乱的排成一排,选出两个人比赛,一个人当裁判,其中裁判的标号要在两个选手之间,即:从裁判左边选一个比裁判小的标号,并从右边选一个比裁判大的标号,或从裁判左边选一个比裁判大的标号,并从右边选一个比裁判小的标号。
如果对于每个数字直接判断,肯定超时,所以考虑用树状数组,对于每个数字记录左边比他小的和记录右边比他小的,此题就变得很容易了。
#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>using namespace std;#define max 100001//#define long long llint a[max];int c[max];int l[max],r[max];int lowbit(int i){ return i&(-i);}void add(int x){ while(x<=max) { c[x]+=1; x+=lowbit(x); }}int sum(int x){ int r=0; while(x>0) { r+=c[x]; x-=lowbit(x); } return r;}int main(){ int n; int T,i,j; scanf("%lld",&T); while(T--) { scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(c,0,sizeof(c)); memset(l,0,sizeof(l)); memset(r,0,sizeof(r)); for(i=1;i<=n;i++) { add(a[i]); l[i]=sum(a[i]-1); } //cout<<l[1]<<" "<<l[2]<<" "<<l[3]<<endl; memset(c,0,sizeof(c)); for(i=n;i>=1;i--) { add(a[i]); r[i]=sum(a[i]-1); } //cout<<r[1]<<" "<<r[2]<<" "<<r[3]<<endl; __int64 sum=0; //坑我好苦,long long 就wa for(i=2;i<n;i++) { sum+=(l[i]*(n-i-r[i])+r[i]*(i-1-l[i])); } printf("%I64d\n",sum); } return 0;}
- hdu2492 (树状数组)
- HDU2492 树状数组
- hdu2492 Ping pong (树状数组)
- hdu2492(树状数组+离线处理)
- 树状数组 hdu2492 Ping pong
- 树状数组终结篇(十四)之hdu2492
- hdu2492 Ping pong 树状数组BIT
- HDU2492 Ping pong 树状数组求逆序数
- 09-09 HDU_Steps5.3 树状数组,LCA HDU1166 HDU2492 HDU3584 HDU2586 HDU2874 HDU3486 HDU2688
- hdu2492
- HDU2492
- hdu2492 数状数组或者线段树
- (转)树状数组
- 树状数组(转载)
- Stars(树状数组)
- 树状数组(interval)
- (转)树状数组
- 树状数组(2)
- tar命令的使用
- Android NDK 用Makefile 编译
- UBUNTU下编译安装opencv 2.4.5 (pcduino)
- 在Grails中创建一个简单的Twitter应用程序(第3部分)
- 并查集
- hdu2492 (树状数组)
- 【diannaoxitong】word只能用安全模式打开怎么办?
- 从RF、BB、AP、外设4个角度看手机的硬件性能http://bbs.weiphone.com/read-htm-tid-2396773.html
- hdu 4633 Who's Aunt Zhang(Burnside引理+乘法逆元)
- 百度谷歌等各大搜索引擎网站收录提交入口
- Linux发行版:CentOS、Ubuntu、RedHat、Android、Tizen、MeeGo
- hdu 2602 Bone Collector (01背包)
- SDJZU Think Different
- IT精彩小说推荐(陆续更新)