Median

HDU - 5857

There is a sorted sequence A of length n. Give you m queries, each one contains four integers, l1, r1, l2, r2. You should use the elements A[l1], A[l1+1] ... A[r1-1], A[r1] and A[l2], A[l2+1] ... A[r2-1], A[r2] to form a new sequence, and you need to find the median of the new sequence.

InputFirst line contains a integer T, means the number of test cases. Each case begin with two integers n, m, means the length of the sequence and the number of queries. Each query contains two lines, first two integers l1, r1, next line two integers l2, r2, l1<=r1 and l2<=r2. 
T is about 200. 
For 90% of the data, n, m <= 100 
For 10% of the data, n, m <= 100000 
A[i] fits signed 32-bits int. 
OutputFor each query, output one line, the median of the query sequence, the answer should be accurate to one decimal point.Sample Input

1
4 2
1 2 3 4
1 2
2 4
1 1
2 2

Sample Output

2.0
1.5

给你一个有序序列,让你再两个区间内找到构造成新序列的其中位数

这个题,我们可以把它转换为两个平衡的区间,即确保第一个l和r都比第二个的小

然后就有是否相交,相交了在左边,在中间,在右边

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
int l1,r1,l2,r2;
int a[N];
int la(int s)
{
if(r1<=l2)
{
if(r1-l1+>=s)return a[l1+s-];
s-=r1-l1+;
return a[l2+s-];
}
if(l2-l1>=s)return a[l1+s-];
if(l2-l1>=s-(r1-l2+)*)
{
s-=l2-l1+;
return a[l2+s/];
}
s-=r1-l1+;
return a[l2+s-]; }
int main()
{
ios::sync_with_stdio(false),cin.tie(),cout.tie();
int T;
cin>>T;
while(T--)
{
int n,q;
cin>>n>>q;
for(int i=; i<=n; i++)cin>>a[i];
for(int i=; i<q; i++)
{
cin>>l1>>r1>>l2>>r2;
if(l2<l1)swap(l1,l2);
if(r2<r1)swap(r1,r2);
int cd=r2+r1-l1-l2+;
if(cd&)
{
printf("%.1f\n",1.0*la(cd/+));
}
else
{
printf("%.1f\n",0.5*la(cd/+)+0.5*la(cd/));
}
}
}
return ;
}

HDU5857 Median 模拟的更多相关文章

  1. hdu5857 Median(模拟)

    Median Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  2. hdu-5857 Median(水题)

    题目链接: Median Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  3. POJ 3784 Running Median (模拟水过带翻译)

    Description Moscow is hosting a major international conference, which is attended by n scientists fr ...

  4. Codeforces Round #577 (Div. 2) C. Maximum Median (模拟,中位数)

    题意:给你一个长度为奇数\(n\)的序列.你可以对任意元素加上\(k\)次\(1\),求操作后的中位数最大. 题解:先对序列进行排序,然后对中位数相加,如果中位数和后面的元素相等,就对后面所有和当前中 ...

  5. Codeforces Round #550 (Div. 3) E. Median String (模拟)

    Median String time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  6. 【HDU5857】Median

    题意 给出一个长度为n的有序序列.给出m个询问,每个询问包括四个正整数l1,r1,l2,r2你用l1tor1的和l2tor2的元素来组成一个新的序列,然后找出这个序列的中位数. 分析 这是当时Spri ...

  7. median(NOIP模拟赛Round 3)

    也是神奇的题目.. 原题传送门 首先看到这道题目,很明显我们需要线性算法 1.前缀和+统计 2.DP+统计 对于第一种算法,我们可以对于任何一个a[i]对b进行比较,如果大于b标上1,等于b标上0,小 ...

  8. 10.7 csp-s模拟测试63 Median+Game+Park

    我堕落了 我觉得任牛逼的问题也是我的问题 T1 Median T2 Game T3 Park

  9. [CSP-S模拟测试]:Median(暴力+模拟)

    题目描述 定义两个数列: $$S=\{S(1),S(2),...,S(n)\}\text{和}S_2\{S_2(1),S_2(2),...,S_2(n)\}$$ $$S(k)=(p_k\times k ...

随机推荐

  1. Jsoup查找dom元素

    package com.open1111.jsoup; import org.apache.http.HttpEntity;import org.apache.http.client.methods. ...

  2. HDU1043 八数码(BFS + 打表)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 , 康托展开 + BFS + 打表. 经典八数码问题,传说此题不做人生不完整,关于八数码的八境界 ...

  3. linux 命令——23 目录结构

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

  4. javascript中Array常用方法

    一.基本概念 1.什么是数组 数组就是一组数据的集合 其表现形式就是内存中的一段连续的内存地址 数组名称其实就是连续内存地址的首地址 2.关于js中的数组特点 数组定义时无需指定数据类型 数组定义时可 ...

  5. 白鹭引擎eui控件的简单创建和管理方法

    一.创建ui文件: 1. 创建exml文件,改成group类型,拖入default.res.json文件里面,文件类型改成text. 2. 将创建的exml文件拖入控件,控件可以在属性面板命名. 3. ...

  6. 搭建mock服务器(微信小程序)

    搭建mock服务器(微信小程序) 如何在微信小程序使用mock.js实在是个问题,为了完全模拟访问路由和数据,选择在搭建本地mock服务器是一个不错的选择. 以下示例了一个mock服务器的搭建过程以及 ...

  7. Vue中结合clipboard实现复制功能

    首先现在Vue中引入clipboard npm install clipboard --save 在需要使用的组件中import 引入clipboard import Clipboard from ' ...

  8. 什么是 TCP/IP?

    前言: 精通 TCP/IP,熟练使用 Socket 进行网路编程. 看到这句话,有没有感到很熟悉呀?相信很多人在投递简历的时候都看到过这条要求,很多人会觉得我们在实际开发中一般用不到这些知识,所以对这 ...

  9. linux运维、架构之路-MySQL多实例

    一.MySQL多实例介绍            一台服务器上开启多个不同的服务端口(3306,3307,3308),运行多个MySQL服务进程,共用一套MySQL安装程序,多实例MySQL在逻辑上看是 ...

  10. formpanel布局的学习

    FormPanel有两种布局:form和column,form是纵向布局,column为横向布局.默认为后者.使用layout属性定义布局类型.对于一个复杂的布局表单,最重要的是正确分割,分割结果直接 ...