关闭

hdu5857模拟

135人阅读 评论(0) 收藏 举报
分类:

所有的情况都可以转化成分离和相交两种情况,再分类讨论

#include <cmath>
#include <cstdio>
#include <iostream>
using namespace std;

const int maxn=100010;

int n,m;
int a[100010];
int l1,r1,l2,r2;
int solve(int len)
{
    if(r1 <= l2)//分离
    {
        if(r1-l1+1 >= len)
            return a[l1+len-1];
        else
        {
            len -= r1 - l1 + 1;
            return a[l2+len-1];
        }
    }
    else//相交
    {
        if(l2-l1 >= len)
            return a[l1+len-1];
        else if(l2-l1+(r1-l2+1)*2 < len)
        {
            len -= r1-l1+1;
            return a[l2+len-1];
        }
        else
        {
            len -= l2 - l1;
            if(len & 1)
                return a[l2+len/2];
            else
                return a[l2+len/2-1];
        }
    }
}

int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        for(int i = 1; i <= n; i++)
            scanf("%d",&a[i]);
        while(m--)
        {
            scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
            if(l1 > l2)
                swap(l1,l2);
            if(r1 > r2)
                swap(r1,r2);
            int len = r1 - l1 + 1 + r2 - l2 + 1;
            if(len & 1)
                printf("%.1f\n",1.0*solve(len/2+1));
            else
                printf("%.1f\n",0.5*solve(len/2)+0.5*solve(len/2+1));
        }
    }
    return 0;
}
0
0
查看评论

HDU5857 Median[模拟]

题意:给你一个一串已经排好序的数,再给你两个区间L1,R1,L2,R2 问这两个区间组成的新的一串数的中位数是多少。 思路:刚开始想可以分成三种情况包含,分离和相交 后来仔细一想,包含和相交可以通过交换R1,R2来合并,这样就只有两种情况了,模拟即可。 因为我在写新串偶数情况时先将两个数加起...
  • Chyllo
  • Chyllo
  • 2016-08-19 21:27
  • 296

HDU5857 Median

Median                                         &#...
  • Jelly_acm
  • Jelly_acm
  • 2017-07-21 15:51
  • 125

Median - hdu5857

题目链接 题意:给你一个包含n个数的序列和m个询问,每个询问包含两个区间,求出这两个区间包含的所有数的中位数。 思路:分两种情况讨论即可,一种是两区间没有交集,一种是有交集。 代码: /// He renders landscapes with great skill and ...
  • Yangssenleo
  • Yangssenleo
  • 2017-04-09 21:52
  • 153

hdu5857分类

直接分类,查询答案直接输出#include<cstdio> #include<cmath> #include<cstring> #include<queue> #include<stack> #include<cstdlib> ...
  • tree__water
  • tree__water
  • 2016-08-18 23:21
  • 79

【HDU5857】Median(方法)

按区间分类讨论。#include <cstdio> #include <iostream> #include <cstring> #include <string> #include <algorithm> #include <cst...
  • oranges_c
  • oranges_c
  • 2016-08-20 18:37
  • 92

2016多校训练Contest10: 1001 Median hdu5857

Problem Description 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 t...
  • lqybzx
  • lqybzx
  • 2016-08-18 23:22
  • 318

模拟内存动态管理——学习篇(原创)

模拟内存动态管理——学习篇(原创)   本文简单讲讲操作系统对动态内存的管理策略,纯属个人粗浅认识,如果有错,还望指出。 如果转载,还请注明文章出处,谢谢!! 更多可查看: http://www.360doc.com/showWeb/0/0/1...
  • happy08god
  • happy08god
  • 2012-03-31 14:47
  • 1267

模拟jsonp跨域方法

jsonp 跨域方法详解什么事跨域浏览器的同源策略,出于防范跨站脚本的攻击,禁止客户端脚本(如 JavaScript)对不同域的服务进行跨站调用。- 协议名protocol - 主机host - 端口号port - 这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域调用。XMLHttpReq...
  • omlys
  • omlys
  • 2016-10-23 13:07
  • 628

Java反射—模拟Spring的Aop

1.    大概流程   上篇文章已经结合Java反射解释了SpringAop的原理,这里我们简单模拟以下Spring的Aop实现。大体流程如下:   Ø  创建一个properties配置文件模拟Spring配置文件。   Ø&...
  • wang379275614
  • wang379275614
  • 2015-07-28 21:52
  • 1327

STM32F103下模拟I2C的接口代码

硬件I2C虽然高效, 但是调试的时候老是遇到这样那样的问题, 赶项目也没有太多时间在里面折腾, 就使用了模拟I2C来完成. 效率虽然不怎么样, 胜在简单快捷... 废话少说, 这就送上完全注释版的模拟I2C代码, STM32系列下适用, 其他单片机就要修改SCL和SDA的定义以及修改延时函数. #i...
  • zaijzhgh
  • zaijzhgh
  • 2017-03-17 17:23
  • 1546
    个人资料
    • 访问:39772次
    • 积分:2332
    • 等级:
    • 排名:第18930名
    • 原创:201篇
    • 转载:6篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论