bzoj千题计划128:bzoj4552: [Tjoi2016&Heoi2016]排序
http://www.lydsy.com/JudgeOnline/problem.php?id=4552
二分答案
把>=mid 的数看做1,<mid 的数看做0
这样升序、降序排列相当于区间查询0,1 的个数,区间覆盖0,1
线段树即可完成
查询给定位置p
如果=1,说明p位置的数>=mid ,上调下界
如果=0,说明p位置的数<mid,下调上界
#include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; #define N 100001 int n,m,p; int a[N],MID; int sum0[N<<],sum1[N<<],flag[N<<]; int tot0,tot1; struct node
{
int ty,l,r;
}e[N]; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} void build(int k,int l,int r)
{
sum0[k]=sum1[k]=;
flag[k]=-;
if(l==r)
{
if(a[l]>=MID) sum1[k]++;
else sum0[k]++;
return;
}
int mid=l+r>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
sum0[k]=sum0[k<<]+sum0[k<<|];
sum1[k]=sum1[k<<]+sum1[k<<|];
} void down(int k,int l,int mid,int r)
{
if(!flag[k])
{
sum0[k<<]=mid-l+;
sum1[k<<]=;
sum0[k<<|]=r-mid;
sum1[k<<|]=;
}
else
{
sum1[k<<]=mid-l+;
sum0[k<<]=;
sum1[k<<|]=r-mid;
sum0[k<<|]=;
}
flag[k<<]=flag[k<<|]=flag[k];
flag[k]=-;
} void query(int k,int l,int r,int opl,int opr)
{
if(l>=opl && r<=opr)
{
tot0+=sum0[k];
tot1+=sum1[k];
return;
}
int mid=l+r>>;
if(flag[k]!=-) down(k,l,mid,r);
if(opl<=mid) query(k<<,l,mid,opl,opr);
if(opr>mid) query(k<<|,mid+,r,opl,opr);
} void change(int k,int l,int r,int opl,int opr,int ty)
{
if(l>=opl && r<=opr)
{
if(!ty)
{
sum0[k]=r-l+;
sum1[k]=;
}
else
{
sum0[k]=;
sum1[k]=r-l+;
}
flag[k]=ty;
return;
}
int mid=l+r>>;
if(flag[k]!=-) down(k,l,mid,r);
if(opl<=mid) change(k<<,l,mid,opl,opr,ty);
if(opr>mid) change(k<<|,mid+,r,opl,opr,ty);
sum0[k]=sum0[k<<]+sum0[k<<|];
sum1[k]=sum1[k<<]+sum1[k<<|];
} int ask(int k,int l,int r,int pos)
{
if(l==r) return sum1[k];
int mid=l+r>>;
if(flag[k]!=-) down(k,l,mid,r);
if(pos<=mid) return ask(k<<,l,mid,pos);
return ask(k<<|,mid+,r,pos);
} bool check(int mid)
{
MID=mid;
build(,,n);
for(int i=;i<=m;++i)
{
tot0=tot1=;
query(,,n,e[i].l,e[i].r);
if(!e[i].ty)
{
if(tot0) change(,,n,e[i].l,e[i].l+tot0-,);
if(tot1) change(,,n,e[i].r-tot1+,e[i].r,);
}
else
{
if(tot1) change(,,n,e[i].l,e[i].l+tot1-,);
if(tot0) change(,,n,e[i].r-tot0+,e[i].r,);
}
}
return ask(,,n,p);
} int main()
{
read(n); read(m);
for(int i=;i<=n;++i) read(a[i]);
for(int i=;i<=m;++i) read(e[i].ty),read(e[i].l),read(e[i].r);
read(p);
int l=,r=n,mid,ans;
while(l<=r)
{
mid=MID=l+r>>;
if(check(mid)) ans=mid,l=mid+;
else r=mid-;
}
cout<<ans;
}
4552: [Tjoi2016&Heoi2016]排序
Time Limit: 60 Sec Memory Limit: 256 MB
Submit: 1478 Solved: 748
[Submit][Status][Discuss]
Description
Input
Output
输出数据仅有一行,一个整数,表示按照顺序将全部的部分排序结束后第q位置上的数字。
Sample Input
1 6 2 5 3 4
0 1 4
1 3 6
0 2 4
3
Sample Output
bzoj千题计划128:bzoj4552: [Tjoi2016&Heoi2016]排序的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- 2018.08.01 BZOJ4552: [Tjoi2016&Heoi2016]排序(二分+线段树)
传送门 线段树简单题. 二分答案+线段树排序. 实际上就是二分答案mid" role="presentation" style="position: relat ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划190:bzoj4300: 绝世好题
http://www.lydsy.com/JudgeOnline/problem.php?id=4300 f[i] 表示第i位&为1的最长长度 #include<cstdio> # ...
- bzoj千题计划121:bzoj1033: [ZJOI2008]杀蚂蚁antbuster
http://www.lydsy.com/JudgeOnline/problem.php?id=1033 经半个下午+一个晚上+半个晚上 的 昏天黑地调代码 最终成果: codevs.洛谷.tyvj上 ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划168:bzoj3513: [MUTC2013]idiots
http://www.lydsy.com/JudgeOnline/problem.php?id=3513 组成三角形的条件:a+b>c 其中,a<c,b<c 若已知 两条线段之和=i ...
随机推荐
- 【BZOJ3143】游走(高斯消元,数学期望)
[BZOJ3143]游走(高斯消元,数学期望) 题面 BZOJ 题解 首先,概率不会直接算... 所以来一个逼近法算概率 这样就可以求出每一条边的概率 随着走的步数的增多,答案越接近 (我卡到\(50 ...
- WPF自学入门(八)WPF窗体之间的交互
今天我们一起来看一下WPF窗体之间的交互-窗体之间的传值.有两个窗体,一个是父窗体,一个是子窗体.要将父窗体的文本框中的值传递给子窗体中的控件.我们该怎么实现? 接下来我们一起来实现窗体之间的传值,在 ...
- Apache中限制和允许特定IP访问
Apache中限制和允许特定IP访问<Directory "/var/www">Options AllAllowOverride NoneOrder Deny,Allo ...
- 性能测试-并发和QPS
性能测试-并发和QPS 响应时间: cpu计算耗时 + cpu等待耗时 + 网络io耗时 + 磁盘io耗时 并发: 服务端并发和客户端并发不是同一个概念.客户端并发仅仅是为了模拟多用户访问,服务端并发 ...
- php 图片合成时文字颜色丢失
最近在做图片合成的时候无意间发现文字颜色丢失了,仔细找了以后才发现原来是因为图片格式的原因 当图片是png图片时文字的颜色就变成了白色的,So.........去你妹的png,用jpg吧! $dest ...
- Python基础-week02
本节内容摘要:http://www.cnblogs.com/Jame-mei 0.xmind8破解及安装(想要破解版及资料请下方留言,这里不做具体说明) 1.模块初识 2.pyc是什么? 3.pyth ...
- IPFS家族(一)
IPFS这个项目其实很大,并不像大家想象的是一个东西,IPFS是由很多模块组成,每一个模块现在都已经独立成项目了,并且有自己的主页.让我们来简单看一下IPFS家族成员. 协议实验室的主页:https: ...
- Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/core
问题 <Spring 实战>第5章,在 IDEA 中 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" pre ...
- 一个 Vue 的滑动按钮组件
git 地址:https://github.com/SyMind/vue-sliding-button vue-better-slider 一个 Vue 的滑动按钮组件,有关滑动方面的处理借鉴 bet ...
- 书写Css文件要点
1. 自定义样式名 实例1:<style type="text/css"> input.ng-invalid{ // .号一定要在对应的元素名后面, 没有空格 colo ...