2021 中庸之道

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
 查看运行结果
 
 
题目描述 Description

给定一个长度为N的序列,有Q次询问,每次询问区间[L,R]的中位数。

数据保证序列中任意两个数不相同,且询问的所有区间长度为奇数。

输入描述 Input Description

第一行为N,Q。

第二行N个数表示序列。

接下来Q行,每行为L,R,表示一次询问。

输出描述 Output Description

输出Q行,对应每次询问的中位数。

样例输入 Sample Input

5 3

1 4 8 16 2

1 5

3 5

3 3

样例输出 Sample Output

4

8

8

数据范围及提示 Data Size & Hint

40%的数据,N,Q≤100;

70%的数据,N≤100;

100%的数据,N≤1000,Q≤100000,序列中的元素为1到10^9之间的整数。

思路:

  主席树裸题;

来,上代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; struct TreeNodeType {
int l,r,dis; TreeNodeType *left,*right;
};
struct TreeNodeType *root[]; int n,q,if_z,num[],num_[],size; char Cget; inline void read_int(int &now)
{
now=,if_z=,Cget=getchar();
while(Cget>''||Cget<'')
{
if(Cget=='-') if_z=-;
Cget=getchar();
}
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
now*=if_z;
} void tree_build(TreeNodeType *&now,int l,int r)
{
now=new TreeNodeType;
now->l=l,now->r=r,now->dis=;
if(l==r) return ;
int mid=(l+r)>>;
tree_build(now->left,l,mid);
tree_build(now->right,mid+,r);
} void tree_change(TreeNodeType *&pre,int to,TreeNodeType *&now)
{
now=new TreeNodeType;
now->l=pre->l,now->r=pre->r,now->dis=pre->dis+;
if(now->l==now->r) return ;
int mid=(now->l+now->r)>>;
if(to<=mid)
{
now->right=pre->right;
tree_change(pre->left,to,now->left);
}
else
{
now->left=pre->left;
tree_change(pre->right,to,now->right);
}
} int tree_query(TreeNodeType *pre,TreeNodeType *now,int to)
{
if(now->l==now->r) return now->l;
int dis=now->left->dis-pre->left->dis;
if(to<=dis) return tree_query(pre->left,now->left,to);
else return tree_query(pre->right,now->right,to-dis);
} int main()
{
read_int(n),read_int(q);
for(int i=;i<=n;i++)
{
read_int(num[i]);
num_[i]=num[i];
}
sort(num+,num+n+);
size=unique(num+,num+n+)-num-;
tree_build(root[],,size);
for(int i=;i<=n;i++)
{
num_[i]=lower_bound(num+,num+size+,num_[i])-num;
tree_change(root[i-],num_[i],root[i]);
}
int l,r;
for(int i=;i<=q;i++)
{
read_int(l),read_int(r);
int mid=((r-l+)>>)+;
printf("%d\n",num[tree_query(root[l-],root[r],mid)]);
}
return ;
}

AC日记——中庸之道 codevs 2021的更多相关文章

  1. AC日记——楼房 codevs 2995

    2995 楼房  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 地平线(x轴)上有n个矩(lou ...

  2. AC日记——传话 codevs 1506 (tarjan求环)

    1506 传话  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解       题目描述 Description 一个朋友网络,如果a认识b,那么如果a第 ...

  3. AC日记——绿色通道 codevs 3342

    3342 绿色通道  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description <思远高考绿色通道&g ...

  4. AC日记——蓬莱山辉夜 codevs 2830

    2830 蓬莱山辉夜  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 在幻想乡中,蓬莱山辉夜是月球 ...

  5. AC日记——苹果树 codevs 1228

    1228 苹果树  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 在卡卡的房子外面,有一棵 ...

  6. AC日记——刺激 codevs 1958

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold     题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺激(exitement,由于刺激 ...

  7. AC日记——红与黑 codevs 2806

    2806 红与黑  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 白银 Silver 题解  查看运行结果     题目描述 Description 有一个矩形房间,覆盖正方形瓷 ...

  8. AC日记——热浪 codevs 1557 (最短路模板题)

    1557 热浪  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 德克萨斯纯朴的民眾们这个夏 ...

  9. AC日记——字典 codevs 4189

    4189 字典  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master 题解  查看运行结果     题目描述 Description 最经,skyzhong得到了 ...

随机推荐

  1. B1061 判断题 (15分)

    B1061 判断题 (15分) 判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分. 输入格式: 输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人 ...

  2. Codeforces Round #459 (Div. 2)-A. Eleven

    A. Eleven time limit per test1 second memory limit per test256 megabytes Problem Description Eleven ...

  3. Android开发——用户在屏幕上的手势识别

    个定点决定.四个属性分别为left(1),top(2),right(3),bottom(4). 数字为图上标出的距离.显然这四个属性是相对于父容器来定的,均可以通过get()方法获取. 因此很容易得出 ...

  4. OpenCV学习笔记(一) 环境配置

    Visual Studio 2010 VS2010对应的OpenCV的lib文件(build\x86\vc10\lib)分为debug模式和release模式两种:debug模式牺牲速度,但能提供更多 ...

  5. IOS开发---菜鸟学习之路--(六)-UITableView几个方法的使用说明

    对于UITableView的基础使用我这边就不做重复介绍了 我重点就来介绍下如何实现大部分新闻的界面.也就是第一条记录显示大图片下面加一段文字说明 然后剩下来的内容全部显示为文字图片的格式 其实要做到 ...

  6. 1、IOS学习计划

    2015年12月10日 -- 2015年12月27日(一共3个周末,12个个工作日) 1.斯坦福公开课(IOS7应用开发) 一共18节课程,通过视频和demo建立感觉 2.千峰的OC课程 一共25节课 ...

  7. Python+Selenium练习篇之17-断言页面标题

    继续来介绍一个Selenium中页面title断言方法. 相关脚本代码如下: # coding=utf-8 import time from selenium import webdriver dri ...

  8. Python操作MySQL+Redis+MongoDB

    1-1 python操作三大主流数据库导学篇 1-2 数据库简介 1-3 MySQL简介 2-1 MySQL安装及配置 2-2 MySQL图形化管理工具 2-3 SQL语法基础-创建并使用数据库 2- ...

  9. LeetCode 62 不同路径

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ).机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角.问总共有多少条不同的路径? 示例 1: 输入: ...

  10. ubuntu16.04中docker安装curl拒绝连接问题

    在Ubuntu16.04中安装docker ce,安装步骤按照官网说明https://docs.docker.com/engine/installation/linux/docker-ce/ubunt ...