题目链接: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(模拟)相关推荐

  1. HDU 4121 Xiangqi 模拟题

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=4121 首先对标题赞一个,非要叫 "Xiangqi" 而不是 "中国象棋&q ...

  2. HDU - 7029 Median 思维

    传送门 文章目录 题意: 思路: 题意: 给你1,2,...,n1,2,...,n1,2,...,n一共nnn个数,你需要将其分成mmm组,使得每组的中位数为bib_ibi​,保证bib_ibi​互不 ...

  3. HDU - 3194 Median

    OJ地址:https://vjudge.net/problem/HDU-3194 This problem is also easy. Given N numbers, and please find ...

  4. HDU 5374 Tetris 模拟俄罗斯方块

    题目大意: 就是俄罗斯方块然后旋转, 向左右移动, 向下掉, 然后模拟求按照给定序列的操作能消除多少行... 大致思路: 就是模拟一下各个步骤的操作...按照题目说的steep1, 2, 3, 4一步 ...

  5. HDU 4262 Juggler (模拟+线段树优化)

    转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526       by---cxlove http://acm.hdu.e ...

  6. HDU 4121 Xiangqi --模拟

    题意: 给一个象棋局势,问黑棋是否死棋了,黑棋只有一个将,红棋可能有2~7个棋,分别可能是车,马,炮以及帅. 解法: 开始写法是对每个棋子,都处理处他能吃的地方,赋为-1,然后判断将能不能走到非-1的 ...

  7. hdu 5071 Chat(模拟|Splay)

    Chat Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Sub ...

  8. HDU 4431 Mahjong(模拟题)

    题目链接 写了俩小时+把....有一种情况写的时候漏了...代码还算清晰把,想了很久才开写的. 1 #include <cstdio> 2 #include <cstring> ...

  9. HDU 4545 (模拟) 魔法串

    题目链接 Problem Description 小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转换使小 ...

  10. hdu 5671(模拟)

    Matrix Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total S ...

最新文章

  1. 剑指offer:面试题26. 树的子结构
  2. PAT, PMT in MPEG2 Stream :筆記
  3. 全国大学生智能汽车竞赛-讯飞智慧餐厅
  4. mc服务器音乐文件夹在哪,添加自定义音乐图文教程 我的世界怎么添加音乐
  5. 从零开始,DIY一个jQuery(2)
  6. 剑指Offer之左旋字符串
  7. java后端服务运行原理_web服务的后台工作原理
  8. 【ACwing 95】费解的开关——枚举 + 搜索
  9. linux欺骗技术,显卡欺骗器状态检测及安装注意事项
  10. (Mysql)跨表查询和跨库查询
  11. 深圳大学电信学院《C程序设计》期末大作业:《在二维封闭房间中的弹球模拟程序》
  12. windows10去桌面图标小箭头和恢复小箭头
  13. 【绝对干货】Swift是花拳绣腿吗?从Swift谈开发语言与程序员的职业发展
  14. HTML生成PDF、web打印动态分页、预览。内容满了,自动换页、移动端兼容 bookjs-eazy
  15. pc端不同分辨率适配
  16. Python--break语句
  17. 仿站高手是怎么练成的 分析仿站必备知识总结
  18. PCA降维以及Kmeans聚类实例----python,sklearn,PCA,Kmeans
  19. objective-c 语法快速过(5)
  20. 人工智能导论--浙江工业大学--王万良

热门文章

  1. OpenStack 运维 - 环境部署 | 报错排查 [T版]
  2. HCIP RS IERS题之OSPF(一)
  3. 计算机设备管理没有打印机,win7电脑的设备和打印机选项无法打开怎么办?
  4. 结构化分析和面向对象分析的区别 例子_淘宝客佣金是什么意思?跟淘宝客服务费有什么区别?-【邯郸seo】...
  5. 基于MS强度或计数的数据依赖法非标记定量蛋白质组学的蛋白质互作分析(二)
  6. MyBatis—引入外部配置文件(properties)
  7. 2022 年要了解的新兴安全供应商
  8. Error:java.lang.RuntimeException: Crunching Cruncher dialog_et_bg.9.png failed, see logs
  9. Error:Execution failed for task :app:mergeDebugResourcesSome file crunching failed的解决方法
  10. H750/H755 安装centos系统