//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 线段树+离散化相关推荐

  1. 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 ...

  2. poj2528贴海报(线段树离散化)

    //poj2528贴海报(线段树离散化) #include<cstring> #include<iostream> #include<cstdio> #includ ...

  3. 【POJ 2482】 Stars in Your Window(线段树+离散化+扫描线)

    [POJ 2482] Stars in Your Window(线段树+离散化+扫描线) Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  4. poj 2528 Mayor's posters(线段树+离散化)

    1 /* 2 poj 2528 Mayor's posters 3 线段树 + 离散化 4 5 离散化的理解: 6 给你一系列的正整数, 例如 1, 4 , 100, 1000000000, 如果利用 ...

  5. POJ Mayor's posters——线段树+离散化

    原文:http://blog.163.com/cuiqiongjie@126/blog/static/85642734201261151553308/ 大致题意: 有一面墙,被等分为1QW份,一份的宽 ...

  6. 线段树-离散化处理点

    博客 :http://www.cnblogs.com/wuyiqi/archive/2012/03/19/2405885.html The citizens of Bytetown, AB, coul ...

  7. poj 2482 Stars in Your Window(线段树+离散化+线扫描)

    题目:http://poj.org/problem?id=2482 大意:在一个坐标系中给你n(10^4)个点(点的坐标范围为0<=x,y<2^31),每个点有一个权值,然后给你一个长宽分 ...

  8. POJ - 2528 线段树+离散化

    其实很早就在白书上的常用技巧上 看到离散化的操作,但是之前一直没遇到过需要离散化的题目(应该是我太菜的缘故),所以一直也没怎么重视,下面说说这道题目的考点,也就是离散化. 什么是离散化呢?请先自行百度 ...

  9. BZOJ 1852 [MexicoOI06]最长不下降序列(贪心+DP+线段树+离散化)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1852 [题目大意] 给你N对数A1,B1--An,Bn.要求你从中找出最多的对, 把它 ...

最新文章

  1. #圆的周长和面积面向对象_数学实验 | 圆的面积公式推导
  2. 内存管理-定时器循环、内存布局、tagged pointer、weak指针、copy、自动释放池
  3. 2019潜江职称计算机考试,2019湖北事业单位联考潜江地区笔试成绩分析
  4. Hibernate面试题分析
  5. 小米集团公布2019年财报:全年总收入突破2000亿!
  6. android接收串口发送字符,android发送接收uart串口代码 - 源码下载|通讯/手机编程|android开发|源代码 - 源码中国...
  7. cmd链接php mysql数据库_php连接mysql数据库_cmd连接mysql数据库 - MySQL最新手册教程 - php中文网手册...
  8. python实现大学物理实验不确定度计算
  9. 完成网络传真,网络扫描。
  10. 制作自己的 Cydia 源
  11. 学习笔记(1):Matlab小白入门必备教程-数据的基本运算
  12. 学习平面设计有哪些优势?
  13. 架构师培训,如何低成本体系性学习? + 最佳实践架构师+自学+老师型:
  14. 有一个3x4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号.
  15. 【CSRF漏洞-01】跨站请求伪造漏洞靶场实战
  16. 国企程序员是真舒服啊,每天上班5小时,2万一月摸鱼不要太快乐
  17. Python的文件处理
  18. 统计学习方法感知机(附简单模型代码)
  19. CF346B Lucky Common Subsequence 题解
  20. CentOS系统ifconfig命令找不到怎么办

热门文章

  1. 如何设置Sketch快捷键,Sketch提升效率的常用技巧
  2. 使用WebGL 自定义 3D 摄像头监控模型
  3. Fortify SCA报告模板汇总
  4. PMP证书女生适合考吗
  5. 树莓派小车————远程控制
  6. 手Q游戏中心上线 完美释放娱乐基因
  7. BurpSuite2021 -- 目标模块(Target)
  8. 在GridControl表格控件中实现多层级主从表数据的展示
  9. 七升七降调号_降7是什么调?
  10. 狼来了 【dfs】【树】