bzoj千题计划128:bzoj4552: [Tjoi2016Heoi2016]排序
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 100001int n,m,p;int a[N],MID;int sum0[N<<2],sum1[N<<2],flag[N<<2];int tot0,tot1;struct node {int ty,l,r; }e[N];void read(int &x) {x=0; char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); } }void build(int k,int l,int r) {sum0[k]=sum1[k]=0;flag[k]=-1;if(l==r){if(a[l]>=MID) sum1[k]++;else sum0[k]++;return;}int mid=l+r>>1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);sum0[k]=sum0[k<<1]+sum0[k<<1|1];sum1[k]=sum1[k<<1]+sum1[k<<1|1]; }void down(int k,int l,int mid,int r) {if(!flag[k]){sum0[k<<1]=mid-l+1;sum1[k<<1]=0;sum0[k<<1|1]=r-mid;sum1[k<<1|1]=0;}else{sum1[k<<1]=mid-l+1;sum0[k<<1]=0;sum1[k<<1|1]=r-mid;sum0[k<<1|1]=0;}flag[k<<1]=flag[k<<1|1]=flag[k];flag[k]=-1; }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>>1;if(flag[k]!=-1) down(k,l,mid,r);if(opl<=mid) query(k<<1,l,mid,opl,opr);if(opr>mid) query(k<<1|1,mid+1,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+1;sum1[k]=0;}else {sum0[k]=0;sum1[k]=r-l+1;}flag[k]=ty;return;}int mid=l+r>>1;if(flag[k]!=-1) down(k,l,mid,r);if(opl<=mid) change(k<<1,l,mid,opl,opr,ty);if(opr>mid) change(k<<1|1,mid+1,r,opl,opr,ty);sum0[k]=sum0[k<<1]+sum0[k<<1|1];sum1[k]=sum1[k<<1]+sum1[k<<1|1]; }int ask(int k,int l,int r,int pos) {if(l==r) return sum1[k];int mid=l+r>>1;if(flag[k]!=-1) down(k,l,mid,r);if(pos<=mid) return ask(k<<1,l,mid,pos);return ask(k<<1|1,mid+1,r,pos); }bool check(int mid) {MID=mid;build(1,1,n);for(int i=1;i<=m;++i){tot0=tot1=0;query(1,1,n,e[i].l,e[i].r);if(!e[i].ty){if(tot0) change(1,1,n,e[i].l,e[i].l+tot0-1,0);if(tot1) change(1,1,n,e[i].r-tot1+1,e[i].r,1);}else{if(tot1) change(1,1,n,e[i].l,e[i].l+tot1-1,1);if(tot0) change(1,1,n,e[i].r-tot0+1,e[i].r,0);}}return ask(1,1,n,p); }int main() {read(n); read(m);for(int i=1;i<=n;++i) read(a[i]);for(int i=1;i<=m;++i) read(e[i].ty),read(e[i].l),read(e[i].r);read(p);int l=1,r=n,mid,ans;while(l<=r){mid=MID=l+r>>1;if(check(mid)) ans=mid,l=mid+1;else r=mid-1;}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
转载于:https://www.cnblogs.com/TheRoadToTheGold/p/7932200.html
bzoj千题计划128:bzoj4552: [Tjoi2016Heoi2016]排序相关推荐
- BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 刷题就图一乐 题目链接 https://hydro.ac/d/bzoj/p/2150 是 hydro ...
- BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2151 是 hydro 的 BZOJ ...
- BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...
- bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼
http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...
- bzoj千题计划248:bzoj3697: 采药人的路径
http://www.lydsy.com/JudgeOnline/problem.php?id=3697 点分治 路径0改为路径-1 g[i][0/1] 和 f[i][0/1]分别表示当前子树 和 已 ...
- bzoj千题计划237:bzoj1492: [NOI2007]货币兑换Cash
http://www.lydsy.com/JudgeOnline/problem.php?id=1492 dp[i] 表示 第i天卖完的最大收益 朴素的dp: 枚举从哪一天买来的在第i天卖掉,或者是不 ...
- bzoj千题计划197:bzoj4247: 挂饰
http://www.lydsy.com/JudgeOnline/problem.php?id=4247 先把挂饰按挂钩数量从大到小排序 dp[i][j]前i个挂饰,剩下j个挂钩的最大喜悦值 分挂和不 ...
- bzoj千题计划161:bzoj1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果
http://www.lydsy.com/JudgeOnline/problem.php?id=1589 tarjan缩环后拓扑排序上DP #include<cstdio> #includ ...
- bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战
http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加 ...
最新文章
- 竟然是它:# vi /etc/resolv.conf
- hdu 5019 第k大公约数
- 马斯克:人脑“带宽”有限,需要用人工智能加持提高连接速度
- 编程名言(有些趣味性)
- 使用Spring Boot 2使用OAuth2和不透明令牌进行集中授权
- getseconds补0_Java Duration类| getSeconds()方法与示例
- 单主复制与多主复制入门
- 方管图纸标注_图样中型材的标注方法
- COMSOL案例内容,有需要的了解下!
- 一个c语言源程序至少包含,一个C源程序必须包含一个main函数
- 扫码枪 - 优惠卷核销
- 关于3阶Volterra滤波器一些理解
- 跟着小码哥一起学习OC语法,都在这里了
- ReadyAPI 教程和示例(一)
- Access 查询的IIF的写法
- 天猫精灵python开发_天猫精灵X1智能音箱使用感想
- 怎么查看无线路由器连接的设备连接服务器,手机如何查看无线wifi连接人数 手机查看无线wifi连接人数方法【介绍】...
- OTG线与普通USB线的区别
- 入场需知|英利参展|第86届中国国际医疗器械博览会-2022CMEF深圳医疗器械展会
- 飞书开发API的调用
热门文章
- oracle11g到底是什么6,Oracle11g六个重要进程
- 全网最具深度的三次握手、四次挥手讲解,深夜思考
- 十年Java编程开发生涯,java内存溢出和内存泄漏的区别
- python ansible_Ansible Python API | linux系统运维
- 上海东华计算机专业学硕复试,17届东华计算机初试+复试经验分享~
- Spring 源码分析, ApplicationContext build 包找不到编译异常
- 网络推广外包——还记得网络推广外包中的site收录吗?
- 网站建设想要赢得用户的认可和客户的满意并不容易
- 网站优化不能忽视网站外链的作用
- 影响网站快照异常的因素有哪些?