hdu 5857 Median(模拟)
题目链接:hdu 5857 Median
题意:
给你n个排好序的数,有m个询问,每次询问给出两个区间,然后让这两个区间的数重新组成一个序列,
然后让你输出这个序列的中位数。
题解:
分类讨论一下。
如果两个区间不重合,那么很直接的就能算出来中位数的位置。
如果重合,就将重合的那一部分数记为占了两个位置。
然后模拟找一下中位数就行了。
1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=(a);i<=(b);++i) 3 using namespace std; 4 5 const int N=1e5+7; 6 int t,n,m,a[N],l1,l2,r1,r2; 7 8 void work1() 9 { 10 int sum=r1-l1+1+r2-l2+1; 11 int now=sum/2+1,an1,an2; 12 if(now<=r1-l1+1)an1=l1+now-1; 13 else now-=r1-l1+1,an1=l2+now-1; 14 if(sum&1)printf("%.1f\n",1.0*a[an1]); 15 else 16 { 17 if(an1==l2)an2=r1; 18 else an2=an1-1; 19 printf("%.1f\n",0.5*(1ll*a[an1]+a[an2])); 20 } 21 } 22 23 void work2() 24 { 25 int tp[4],sum=r1-l1+1+r2-l2+1; 26 tp[0]=l1,tp[1]=r1,tp[2]=l2,tp[3]=r2; 27 sort(tp,tp+4); 28 int now=sum/2+1,an1,an2; 29 if(now<=tp[1]-tp[0])an1=tp[0]+now-1,an2=an1-1; 30 else if(now<=tp[1]-tp[0]+(tp[2]-tp[1]+1)*2) 31 { 32 int tmp=tp[1]-tp[0]; 33 an1=(now-tmp+1)/2+tp[1]-1; 34 if((now-tmp)&1)an2=an1-1; 35 else an2=an1; 36 }else 37 { 38 int tmp=tp[1]-tp[0]+(tp[2]-tp[1]+1)*2; 39 an1=tp[2]+now-tmp; 40 an2=an1-1; 41 } 42 if(sum&1)printf("%.1f\n",1.0*a[an1]); 43 else printf("%.1f\n",0.5*(1ll*a[an1]+a[an2])); 44 } 45 46 int main(){ 47 scanf("%d",&t); 48 while(t--) 49 { 50 scanf("%d%d",&n,&m); 51 F(i,1,n)scanf("%d",a+i); 52 F(i,1,m) 53 { 54 scanf("%d%d%d%d",&l1,&r1,&l2,&r2); 55 if(r2<=l1)swap(l1,l2),swap(r1,r2); 56 if(r1<l2)work1();else work2(); 57 } 58 } 59 return 0; 60 }
View Code
转载于:https://www.cnblogs.com/bin-gege/p/7218690.html
hdu 5857 Median(模拟)相关推荐
- HDU 4121 Xiangqi 模拟题
题目: http://acm.hdu.edu.cn/showproblem.php?pid=4121 首先对标题赞一个,非要叫 "Xiangqi" 而不是 "中国象棋&q ...
- HDU - 7029 Median 思维
传送门 文章目录 题意: 思路: 题意: 给你1,2,...,n1,2,...,n1,2,...,n一共nnn个数,你需要将其分成mmm组,使得每组的中位数为bib_ibi,保证bib_ibi互不 ...
- HDU - 3194 Median
OJ地址:https://vjudge.net/problem/HDU-3194 This problem is also easy. Given N numbers, and please find ...
- HDU 5374 Tetris 模拟俄罗斯方块
题目大意: 就是俄罗斯方块然后旋转, 向左右移动, 向下掉, 然后模拟求按照给定序列的操作能消除多少行... 大致思路: 就是模拟一下各个步骤的操作...按照题目说的steep1, 2, 3, 4一步 ...
- HDU 4262 Juggler (模拟+线段树优化)
转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove http://acm.hdu.e ...
- HDU 4121 Xiangqi --模拟
题意: 给一个象棋局势,问黑棋是否死棋了,黑棋只有一个将,红棋可能有2~7个棋,分别可能是车,马,炮以及帅. 解法: 开始写法是对每个棋子,都处理处他能吃的地方,赋为-1,然后判断将能不能走到非-1的 ...
- hdu 5071 Chat(模拟|Splay)
Chat Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Sub ...
- HDU 4431 Mahjong(模拟题)
题目链接 写了俩小时+把....有一种情况写的时候漏了...代码还算清晰把,想了很久才开写的. 1 #include <cstdio> 2 #include <cstring> ...
- HDU 4545 (模拟) 魔法串
题目链接 Problem Description 小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转换使小 ...
- hdu 5671(模拟)
Matrix Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
最新文章
- 剑指offer:面试题26. 树的子结构
- PAT, PMT in MPEG2 Stream :筆記
- 全国大学生智能汽车竞赛-讯飞智慧餐厅
- mc服务器音乐文件夹在哪,添加自定义音乐图文教程 我的世界怎么添加音乐
- 从零开始,DIY一个jQuery(2)
- 剑指Offer之左旋字符串
- java后端服务运行原理_web服务的后台工作原理
- 【ACwing 95】费解的开关——枚举 + 搜索
- linux欺骗技术,显卡欺骗器状态检测及安装注意事项
- (Mysql)跨表查询和跨库查询
- 深圳大学电信学院《C程序设计》期末大作业:《在二维封闭房间中的弹球模拟程序》
- windows10去桌面图标小箭头和恢复小箭头
- 【绝对干货】Swift是花拳绣腿吗?从Swift谈开发语言与程序员的职业发展
- HTML生成PDF、web打印动态分页、预览。内容满了,自动换页、移动端兼容 bookjs-eazy
- pc端不同分辨率适配
- Python--break语句
- 仿站高手是怎么练成的 分析仿站必备知识总结
- PCA降维以及Kmeans聚类实例----python,sklearn,PCA,Kmeans
- objective-c 语法快速过(5)
- 人工智能导论--浙江工业大学--王万良
热门文章
- OpenStack 运维 - 环境部署 | 报错排查 [T版]
- HCIP RS IERS题之OSPF(一)
- 计算机设备管理没有打印机,win7电脑的设备和打印机选项无法打开怎么办?
- 结构化分析和面向对象分析的区别 例子_淘宝客佣金是什么意思?跟淘宝客服务费有什么区别?-【邯郸seo】...
- 基于MS强度或计数的数据依赖法非标记定量蛋白质组学的蛋白质互作分析(二)
- MyBatis—引入外部配置文件(properties)
- 2022 年要了解的新兴安全供应商
- Error:java.lang.RuntimeException: Crunching Cruncher dialog_et_bg.9.png failed, see logs
- Error:Execution failed for task :app:mergeDebugResourcesSome file crunching failed的解决方法
- H750/H755 安装centos系统