HDOJ 2492 Ping pong 线段树+离散化
//2492 Ping pong 线段树+离散化
/*
题意:
有一陀人从左到右排成一排,每个人有一个唯一的技能值,每个人都找其他人比赛,
比赛前要再找一个人做裁判,裁判的技能值不能比这两个人都高,也不能比这两个人都低,
并且这两个人到裁判的距离总和不能大于他们之间的距离,
不同的人比赛或者比赛时候的裁判不同算不同的比赛,求一共能比几场思路:
由题意知道裁判必须在这两个人中间
枚举每一个人做裁判,这是能发生的比赛就是
1、这个人之前技能值比他小的*这个人之后技能值比他大的
2、这个人之前技能值比他大的*这个人之后技能值比他小的由于技能值不是从1-n,所以要离散化
总数多 要__int64*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>#define N 20005
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,rint sum[N<<2],s[N],x[N];
int n;int cmp(const void *a,const void *b){return *(int *)a - *(int *)b;
}void Pushup(int rt){sum[rt] = sum[rt<<1] + sum[rt<<1|1];
}void Build(int rt,int l,int r){sum[rt] = 0;if(l == r)return ;int mid = (l + r) >> 1;Build(lson);Build(rson);
}void Update(int rt,int l,int r,int x){if(l == r){++sum[rt];return ;}int mid = (l + r) >>1;if(x <= mid) Update(lson,x);else Update(rson,x);Pushup(rt);
}__int64 Query(int rt,int l,int r,int L,int R){if(L <= l && R >= r){return sum[rt];}int mid = (l + r) >> 1;__int64 res = 0;if(L <= mid) res += Query(lson,L,R);if(R > mid ) res += Query(rson,L,R);return res;
}int Bin(int key){int l = 1,r = n,mid;while(r >= l){mid = (l + r ) >> 1;if(key == s[mid]) return mid;if(key > s[mid]) l = mid + 1;else r = mid - 1;}return -1;
}int main(){int T,i,tmp;__int64 ans,a,b,c,d;scanf("%d",&T);while(T--){scanf("%d",&n);Build(1,1,n);ans = 0;for(i = 1; i <= n; ++i){scanf("%d",&s[i]);x[i] = s[i];}qsort(s+1,n,sizeof(s[0]),cmp);for(i = 1; i <= n; ++i){tmp = Bin(x[i]);a = Query(1,1,n,1,tmp); //前面比它小的b = i-1-a; //前面比它大的c = tmp-1-a; //后面比它小的d = n-tmp-b; //后面比它大的ans += a*d+b*c;Update(1,1,n,tmp);}printf("%I64d\n",ans);}return 0;
}
HDOJ 2492 Ping pong 线段树+离散化相关推荐
- POJ 3928 amp; HDU 2492 Ping pong(树阵评价倒数)
主题链接: PKU:http://poj.org/problem?id=3928 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Descript ...
- poj2528贴海报(线段树离散化)
//poj2528贴海报(线段树离散化) #include<cstring> #include<iostream> #include<cstdio> #includ ...
- 【POJ 2482】 Stars in Your Window(线段树+离散化+扫描线)
[POJ 2482] Stars in Your Window(线段树+离散化+扫描线) Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- poj 2528 Mayor's posters(线段树+离散化)
1 /* 2 poj 2528 Mayor's posters 3 线段树 + 离散化 4 5 离散化的理解: 6 给你一系列的正整数, 例如 1, 4 , 100, 1000000000, 如果利用 ...
- POJ Mayor's posters——线段树+离散化
原文:http://blog.163.com/cuiqiongjie@126/blog/static/85642734201261151553308/ 大致题意: 有一面墙,被等分为1QW份,一份的宽 ...
- 线段树-离散化处理点
博客 :http://www.cnblogs.com/wuyiqi/archive/2012/03/19/2405885.html The citizens of Bytetown, AB, coul ...
- poj 2482 Stars in Your Window(线段树+离散化+线扫描)
题目:http://poj.org/problem?id=2482 大意:在一个坐标系中给你n(10^4)个点(点的坐标范围为0<=x,y<2^31),每个点有一个权值,然后给你一个长宽分 ...
- POJ - 2528 线段树+离散化
其实很早就在白书上的常用技巧上 看到离散化的操作,但是之前一直没遇到过需要离散化的题目(应该是我太菜的缘故),所以一直也没怎么重视,下面说说这道题目的考点,也就是离散化. 什么是离散化呢?请先自行百度 ...
- BZOJ 1852 [MexicoOI06]最长不下降序列(贪心+DP+线段树+离散化)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1852 [题目大意] 给你N对数A1,B1--An,Bn.要求你从中找出最多的对, 把它 ...
最新文章
- #圆的周长和面积面向对象_数学实验 | 圆的面积公式推导
- 内存管理-定时器循环、内存布局、tagged pointer、weak指针、copy、自动释放池
- 2019潜江职称计算机考试,2019湖北事业单位联考潜江地区笔试成绩分析
- Hibernate面试题分析
- 小米集团公布2019年财报:全年总收入突破2000亿!
- android接收串口发送字符,android发送接收uart串口代码 - 源码下载|通讯/手机编程|android开发|源代码 - 源码中国...
- cmd链接php mysql数据库_php连接mysql数据库_cmd连接mysql数据库 - MySQL最新手册教程 - php中文网手册...
- python实现大学物理实验不确定度计算
- 完成网络传真,网络扫描。
- 制作自己的 Cydia 源
- 学习笔记(1):Matlab小白入门必备教程-数据的基本运算
- 学习平面设计有哪些优势?
- 架构师培训,如何低成本体系性学习? + 最佳实践架构师+自学+老师型:
- 有一个3x4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号.
- 【CSRF漏洞-01】跨站请求伪造漏洞靶场实战
- 国企程序员是真舒服啊,每天上班5小时,2万一月摸鱼不要太快乐
- Python的文件处理
- 统计学习方法感知机(附简单模型代码)
- CF346B Lucky Common Subsequence 题解
- CentOS系统ifconfig命令找不到怎么办