hdu2492 Ping pong
hdu2492 Ping pong
题意:一群乒乓爱好者居住在一条直线上,如果两个人想打比赛需要一个裁判,裁判的 位置 必须在两者之间 ,裁判的能力也必须不大于 参赛者最大的,不小于参赛者最小的
白皮的题解:考虑 第 i 个 为裁判 的情况 如果 左边 比 a[i] 小的 人数 为 c[i],则 有 i-c[i]-1 个人 比 a[i] 大,同样 右边 比 a[i] 小 的人数为 d[i] ,则比a[i]大的人为 n - i - d[i];
则方案 为 d[i]*( i - c[i] - 1 ) + c[i] * (n - i - d[i])
用 x[ a[i] ] 表示 比 a[i] 小的个数,这就涉及到了 树状数组
代码……
#include <iostream> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <map> #include <queue> #include <stack> #include <set> #include <string> using namespace std; typedef long long ll; const double ESP = 10e-8; const int MOD = 1000000007; typedef long long LL; const int MAXN = 20000 + 10; const int MAXA = 100000 + 10; int bit[MAXA]; int c[MAXN]; int d[MAXN]; int arr[MAXN];int sum(int i){int s = 0;while(i > 0){s += bit[i];i -= i&-i;}return s; }void add(int i,int x){while(i < MAXA){bit[i] += x;i += i&-i;} } int main(){ // freopen("input.txt","r",stdin);int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);memset(bit,0,sizeof(bit));memset(c,0,sizeof(c));memset(d,0,sizeof(d));for(int i = 1;i <= n;i++){scanf("%d",&arr[i]);c[i] = sum(arr[i]);add(arr[i],1);}memset(bit,0,sizeof(bit));for(int i = n;i > 0;i--){d[i] = sum(arr[i]-1);add(arr[i],1);}LL ans = 0;for(int i = 1;i <= n;i++){ans += c[i]*(n-i-d[i]) + d[i]*(i-c[i]-1);}printf("%I64d\n",ans);}return 0; }
转载于:https://www.cnblogs.com/hanbinggan/p/4681048.html
hdu2492 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 ...
- Ping pong【树状数组】
Ping pong UVALive - 4329 题目传送门 题目大意:一条大街上住着n个乒乓球爱好者,经常组织比赛切磋技术.每个人都有一个不同的技能值ai.每场比赛需要三个人:两名选手,一名裁判.他 ...
- ping/pong模式_PING的完整形式是什么?
ping/pong模式 PING:数据包InterNet Groper (PING: Packet InterNet Groper) In the sector of networking of co ...
- Unity3D 4.x怎样实现动画的Ping Pong效果
近期在看Unity官方的Stealth项目教学视频.视频使用的是Unity旧的版本号,而我如今正在使用的是Unity 4.5,动画系统的操作全然不同了.依照视频的方式根本无法设置动画的Ping Pin ...
- [UVALive - 4329] Ping pong 树状数组入门
题目链接:Ping pong 题意 给你n个数,你从中取3个数,要求中间的数字大小在两边数字之间.问你总共有多少种取法. 题解 这个题首先需要分析转化. 假设第i个人作为中间数 a1-ai−1有ci个 ...
- HDOJ 2492 Ping pong 线段树+离散化
//2492 Ping pong 线段树+离散化 /* 题意: 有一陀人从左到右排成一排,每个人有一个唯一的技能值,每个人都找其他人比赛, 比赛前要再找一个人做裁判,裁判的技能值不能比这两个人都高,也 ...
- go-gorilla的ping pong
业务需求,ping每隔60秒执行一次,ping两次后,没有得到pong的消息,自动切断client. pongTime=180 * time.Second pingTime=60 * time.Sec ...
- ping pong buffer
Ping pong buffer is a buffer used in a transmission that contains two separate buffers, while one bu ...
- Ping Pong Buffer 双缓冲 C++代码学习
1.Ping Pong Buffer 原理分析 基本原理如上图所示,当设备有数据来时,先放入缓冲区1 然后将缓冲区1的数据放入缓冲区2,这时缓冲区1可接收下次数据.工作区可从缓冲区2拿数据 2.C++ ...
- 心跳PING PONG用法
写PHP代码十多年了,没有接触过这个概念.只是知道MySQL有PING. 后来用其他语言才偶然接触到心跳的规则,请求参数发送PING,返回内容为PONG表示这个服务可用,算是一个不成文的规范.
最新文章
- 浅谈域名发散与域名收敛
- linux lvm 简介之二 扩充空间
- accounts/login/?next=/account/password-change/
- Java 虚拟机运行时数据区
- .NET 4.0中的泛型协变和反变
- .Net报文请求转义
- 链表排序 Sort List
- 洛谷OJ P1802 5倍经验日 动态规划
- 《集成电路制造工艺与工程应用》目录
- 融资轮数划分 天使轮 种子轮 preA A A+ B轮 C轮
- 【阅读笔记】Federated Learning for Privacy-Preserving AI
- 解除百度网盘下载限速
- 【关于为什么要刷力扣的思考】记第二次周赛AK
- JDK源码分析 FutureTask源码分析
- 上传文件到服务器打不开,关于软件上传到服务器后出现图片打不开的解决方法...
- 1008.顺序结构习题:摄氏温度转换为华氏温度和绝对温度
- mysql升序降序关键字(DESC降序,ASC升序)
- antv x6 连接桩
- 优优聚电商:商品转化率怎么算
- 30岁的男人怎么样才算成功呢?
热门文章
- UltraEdit打开就报错,文件找不到
- JNI中访问JList的代码
- systemback慎用:安装后无法启动
- 南半球左撇子的人是否多一些
- VS error C2471: 无法更新程序数据库vc90.pdb的解决办法
- C++11强类型枚举——枚举类
- c语言三位数倒序,C语言求助!一个三位数的逆序数,总是编不对
- matlab导弹追踪问题垂直逃逸,综合程序设计 导弹追踪问题 (matlab)
- crontab 日志_linux计划任务-单次任务(at)与循环任务(crontab)
- ulimit和core文件的使用方法