poj 3928 树状数组
题目中只n个人,每个人有一个ID和一个技能值,一场比赛需要两个选手和一个裁判,只有当裁判的ID和技能值都在两个选手之间的时候才能进行一场比赛,现在问一共能组织多少场比赛。
由于排完序之后,先插入的一定是小的,所以左右两边的大于小于都能确定,用树状数组维护选手的id
Sample Input
1
3 1 2 3
Sample Output
1
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue> 7 using namespace std; 8 int n,m,t; 9 const int maxn=100000; 10 __int64 c[maxn]; 11 struct node 12 { 13 int x,id; 14 }p[maxn+2]; 15 bool cmp(node a,node b) 16 { 17 return a.x<=b.x; 18 } 19 int lowbit(int i) 20 { 21 return i&(-i); 22 } 23 void add(int i,__int64 d) 24 { 25 while(i<=maxn) 26 { 27 c[i]+=d; 28 i+=lowbit(i); 29 } 30 } 31 __int64 sum(int i) 32 { 33 __int64 ret=0; 34 while(i) 35 { 36 ret+=c[i]; 37 i-=lowbit(i); 38 } 39 return ret; 40 } 41 int main() 42 { 43 int i,j,k; 44 __int64 lmin,lmax,rmin,rmax,ans=0; 45 //freopen("1.in","r",stdin); 46 scanf("%d",&t); 47 while(t--) 48 { 49 for(i=0;i<=maxn;i++) c[i]=0; 50 scanf("%d",&n); 51 for(i=1;i<=n;i++) scanf("%d",&p[i].x),p[i].id=i; 52 sort(p+1,p+1+n,cmp); 53 add(p[1].id,1); 54 for(i=2;i<n;i++) 55 { 56 lmin=sum(p[i].id-1); //计数是从1到i-1,故要多减一个1 57 lmax=p[i].id-1-lmin; 58 //printf("%I64d %I64d ",lmin,lmax); 59 rmin=sum(n)-sum(p[i].id); 60 rmax=n-p[i].id-rmin; 61 //printf("%I64d %I64d \n",rmin,rmax); 62 ans+=(lmin*rmax+rmin*lmax); add(p[i].id,1); 63 //printf("%I64d\n",ans); 64 } 65 printf("%I64d\n",ans); 66 ans=0; 67 } 68 return 0; 69 }
转载于:https://www.cnblogs.com/cnblogs321114287/p/4281855.html
poj 3928 树状数组相关推荐
- HDU 2689 POJ 2299 树状数组 + 离散化
以前都是直接树状数组裸奔,昨天一个题数据量好大,过不了,没办法只能学离散化,今天A了第一个离散化的题 #include<stdio.h> #include<string.h> ...
- poj 3067 树状数组
这题的关键是方法.怎么才是相交的呢?一种方法是线段a的左边比线段b的左边小,同时a的右边比b的右边大.这时就可以构成一个相交.于是,我们可以根据左边的值来做降序排列,然后根据线段树来统计crosses ...
- POJ 3928 hdu 2492 Uva1428 PingPong 【树状数组】
Ping pong Time Limit: 2000/1000 MS (Java/Others) ...
- poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★
poj 2352 Stars 目录 poj 2352 Stars 1.树状数组 2.线段树,先建树后查找 3.线段树,边建树边查找 Description Astronomers often exam ...
- POJ 2481 Cows POJ 2352 Stars(树状数组妙用)
题目链接:POJ 2481 Cows POJ 2352 Stars 发现这两个题目都跟求逆序数有着异曲同工之妙,通过向树状数组中插入点的位置,赋值为1,或者++,然后通过求和来判断比当前 点 &quo ...
- poj 3321 Apple Tree(dfs序+树状数组求和模型)
题目链接:http://poj.org/problem?id=3321 解题思路: 先dfs求出序列,将子树转化到dfs序列的区间内,接下来就是简单的树状数组求和模型了.水题. #include< ...
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
题目链接:http://poj.org/problem?id=2299 Description In this problem, you have to analyze a particular so ...
- POJ 2299 Ultra-QuickSort(树状数组 + 离散)
链接:http://poj.org/problem?id=2299 题意:给出N个数组成的数列A(0 <= A[i] <= 999,999,999),求该数列逆序对的数量. 分析:题目所谓 ...
- POJ 1195 Mobile phones(裸的二维树状数组)
http://poj.org/problem?id=1195 题意:给出一个矩阵,给某个格子加/减一个数,就某个子矩阵的和,1024*1024的范围,二维的树状数组 子矩阵(x1,y1,x2,y2)( ...
最新文章
- 摄像头Camera标定Calibration原理Theory
- (opencv)ORB匹配算法
- 从零开始一起学习SLAM | 三维空间刚体的旋转
- 硬盘安装WIN7方法
- 任意编程语言访问PostgreSQL:C++接口
- SQL Server replication requires the actual server name to make a connection to the server.错误解决...
- 在redhat enterprise 5 下安装ORACLE 10g
- 【设计模式】适配器模式
- 有关E45: ‘readonly‘ option is set (add!to override)错误的解决方法
- 【Git/GitHub/VSCode】Git提交时使用EMOJI表情、在VS Code中使用emoji commit
- postgres 判断null_PostgreSQL空值null参与运算的处理方法
- uniapp小程序更换头像
- CHOPS 音乐驱动动画2
- 美食小吃加盟网站源码 餐饮奶茶招商加盟类网站pbootcms模板 带安装视频教程【已测试】
- 网络流 - Drainage Ditches - HDU - 1532
- 基于小程序云开发的智慧物业、智慧小区微信小程序,在线报修报检,重大事项投票,报名参加小区活动,小区公告通知,业委会公示、租售房屋
- CC1310的SDK开发之IAR新建工程
- iis6.0 php漏洞,微软IIS 6.0和7.5的多个漏洞及利用方法
- 互联网日报 | 3月31日 星期三 | 小米正式进军智能电动汽车行业;滴滴小桔加油单日成交总额破亿;“中国天眼”正式对全球开放...
- 在快应用中使用安卓系统已安装浏览器(UC、360等)打开网页的方法
热门文章
- 2008引导修复 鼠标键盘用不了_这5个提高键盘鼠标生产力的工具,后悔没早点发现!...
- python3怎么安装mysql_Python3.7安装mysqlclient
- 16进制转base64_《蹲坑学K8S》之19-5:二进制部署Calico网络
- python 模拟键盘_Python模拟键盘输入和鼠标操作
- 系统学习机器学习之弱监督学习(三)--Adversarial Autoencoders
- 计算机科学与技术考研多少分算高分,清华计算机科学与技术系考研初复试高分经验分享...
- 微服务实现不同登陆_PaaS与IaaS在微服务架构实现方面的6大不同
- Java EE服务技术
- spark 读取elasticsearch数据
- Hive from_unixtime函数入门