[BZOJ4552]排序
Description
Input
Output
输出数据仅有一行,一个整数,表示按照顺序将全部的部分排序结束后第q位置上的数字。
Sample Input
1 6 2 5 3 4
0 1 4
1 3 6
0 2 4
3
Sample Output
#include<iostream>
#include<cstdio>
#include<algorithm>
#define M 100010
#define ls node<<1
#define rs node<<1|1
using namespace std;
int n,m,ans,l,r,k;
int a[M],b[M],opt[M],L[M],R[M],val[M<<],tag[M<<]; void update(int node) {val[node]=val[ls]+val[rs];} void push(int node,int l,int r)
{
if(tag[node]!=-)
{
int mid=(l+r)/,v=tag[node];
val[ls]=v*(mid-l+);
val[rs]=v*(r-mid);
tag[ls]=tag[rs]=v;
tag[node]=-;
}
} void build(int node,int l,int r)
{
tag[node]=-;
if(l==r) {val[node]=b[l];return;}
int mid=(l+r)/;
build(ls,l,mid); build(rs,mid+,r);
update(node);
} void change(int node,int l,int r,int l1,int r1,int v)
{
if(l1<=l&&r1>=r)
{
tag[node]=v;
val[node]=(r-l+)*v;
return;
}
if(l1>r||r1<l) return;
int mid=(l+r)/; push(node,l,r);
change(ls,l,mid,l1,r1,v); change(rs,mid+,r,l1,r1,v);
update(node);
} int query(int node,int l,int r,int l1,int r1)
{
if(l1<=l&&r1>=r) return val[node];
if(l1>r||r1<l) return ;
int mid=(l+r)/; push(node,l,r);
return query(ls,l,mid,l1,r1)+query(rs,mid+,r,l1,r1);
} bool check(int mid)
{
for(int i=;i<=n;i++)
b[i]=a[i]>=mid?:;
build(,,n);
for(int i=;i<=m;i++)
{
if(opt[i]==)
{
int num=query(,,n,L[i],R[i]);
change(,,n,R[i]-num+,R[i],);
change(,,n,L[i],R[i]-num,);
}
else
{
int num=query(,,n,L[i],R[i]);
change(,,n,L[i],L[i]+num-,);
change(,,n,L[i]+num,R[i],);
}
}
return query(,,n,k,k);
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
for(int i=;i<=m;i++) scanf("%d%d%d",&opt[i],&L[i],&R[i]);
scanf("%d",&k);l=,r=n;
while(l<=r)
{
int mid=(l+r)/;
if(check(mid)) l=mid+,ans=mid;
else r=mid-;
}
printf("%d",ans);
return ;
}
[BZOJ4552]排序的更多相关文章
- bzoj4552排序(线段树,二分)
题目大意 给定一个长度为n的序列,有m个操作,操作包括两种: \(0\ l\ r\)区间[l,r]的数字升序排序 \(1\ l\ r\)区间[l,r]的数字降序排序 最后询问在q位置上的数是多少? 其 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- 【BZOJ4552】排序(线段树,二分答案)
[BZOJ4552]排序(线段树,二分答案) 题面 BZOJ 题解 好神的题啊 直接排序我们做不到 怎么维护? 考虑一下,如果我们随便假设一个答案 怎么检验它是否成立? 把这个数设成\(1\),其他的 ...
- [BZOJ4552][TJOI2016&&HEOI2016]排序(二分答案+线段树/线段树分裂与合并)
解法一:二分答案+线段树 首先我们知道,对于一个01序列排序,用线段树维护的话可以做到单次排序复杂度仅为log级别. 这道题只有一个询问,所以离线没有意义,而一个询问让我们很自然的想到二分答案.先二分 ...
- 【BZOJ4552】[Tjoi2016&Heoi2016]排序 二分+线段树
[BZOJ4552][Tjoi2016&Heoi2016]排序 Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ...
- BZOJ4552 [Tjoi2016&Heoi2016]排序 【二分 + 线段树】
题目链接 BZOJ4552 题解 之前去雅礼培训做过一道题,\(O(nlogn)\)维护区间排序并能在线查询 可惜我至今不能get 但这道题有着\(O(nlog^2n)\)的离线算法 我们看到询问只有 ...
- [bzoj4552][Tjoi2016][Heoi2016]排序
Description 给出一个$1$到$n$的全排列,现在对这个全排列序列进行$m$次局部排序,排序分为$2$种: $1.(0,l,r)$表示将区间$[l,r]$的数字升序排序; $2.(1,l,r ...
- BZOJ4552: [Tjoi2016&Heoi2016]排序
Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...
- [bzoj4552][Tjoi2016&Heoi2016]排序-二分+线段树
Brief Description DZY有一个数列a[1..n],它是1∼n这n个正整数的一个排列. 现在他想支持两种操作: 0, l, r: 将a[l..r]原地升序排序. 1, l, r: 将a ...
随机推荐
- jQuery UI dialog 参数说明
前段时间碰到个问题 jquery UI dialog弹出层 弹出多个层是 比如弹出两个层A和B B层如果显示的数据表格太大,伸到了A层的外面,那伸到A层之外的部分就看不到了,因为B层是在A层上弹出的 ...
- 该死的Kafka,远程连接Kafka超时以及解决办法
关于消息的发布与订阅,之前一直使用的是activeMQ基于JMS的消息队列进行操作的,最近听说有一个更高效的消息的发布与订阅技术,就是Kafka. 关于kafka的介绍,在这里就不做过多讲解了,因为我 ...
- TuShare获取K线数据
Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们在数据获取 ...
- TCP和UDP的区别?
答:TCP提供面向连接的.可靠的数据流传输,而UDP提供的是非面向连接的.不可靠的数据流传输.TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报.TCP注重数据安全性,UDP数据传输快,因为 ...
- 剑指Offer——数组中出现次数超过一半的数字
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2 ...
- PCI 设备详解二
上篇文章主要从硬件的角度分析了PCI设备的特性以及各种寄存器,那么本节就结合LInux源代码分析下内核中PCI设备的各种数据结构以及相互之间的联系和工作机制 2016-10-09 注:一下代码参考LI ...
- Pycharm配置同步服务器
一.使用场景 我们一般需要将代码放到服务器上运行,但如果等我们将项目全部开发好之后再上传到服务器,而且每次在开发阶段需要经过多次修改,每修改一次,都手动上传一次,这样就太麻烦了,有没有一种方法可以达到 ...
- 001-linux scp文件拷贝
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...
- go-008-循环语句
一.循环语句[只有for] 1.基础结构: Go语言的For循环有3中形式,只有其中的一种使用分号. 和 C 语言的 for 一样: for init; condition; post { } 和 C ...
- js老生常谈之this,constructor ,prototype
前言 javascript中的this,constructor ,prototype,都是老生常谈的问题,深入理解他们的含义至关重要.在这里,我们再来复习一下吧,温故而知新! this this表示当 ...