省选TM都能有BC原题?

。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100500
#define inf 1000000007
using namespace std;
int n,m,a[maxn],l=inf,r=,mi,q;
int ls[maxn<<],rs[maxn<<],lazy[maxn<<],sum[maxn<<],root,tot=;
int pos[maxn],ans;
struct move
{
int type,l,r;
}p[maxn];
void build(int &now,int left,int right)
{
now=++tot;lazy[now]=-;
if (left==right)
{
pos[left]=now;
if (a[left]>=mi) {lazy[now]=;sum[now]=;}
else {lazy[now]=;sum[now]=;}
return;
}
int mid=(left+right)>>;
build(ls[now],left,mid);
build(rs[now],mid+,right);
sum[now]=sum[ls[now]]+sum[rs[now]];
}
void pushdown(int now,int left,int right)
{
if (lazy[now]==-) return;
if (left==right) return;
int mid=(left+right)>>;
if (lazy[now]==)
{
lazy[ls[now]]=;sum[ls[now]]=;
lazy[rs[now]]=;sum[rs[now]]=;
}
else
{
lazy[ls[now]]=;sum[ls[now]]=mid-left+;
lazy[rs[now]]=;sum[rs[now]]=right-mid;
}
lazy[now]=-;
}
int query(int now,int left,int right,int l,int r)
{
pushdown(now,left,right);
if ((left==l) && (right==r))
return sum[now];
int mid=(left+right)>>;
if (r<=mid) return query(ls[now],left,mid,l,r);
else if (l>=mid+) return query(rs[now],mid+,right,l,r);
else return query(ls[now],left,mid,l,mid)+query(rs[now],mid+,right,mid+,r);
}
void modify(int now,int left,int right,int l,int r,int p)
{
pushdown(now,left,right);
if ((left==l) && (right==r))
{
lazy[now]=p;
if (p==) sum[now]=;
else sum[now]=right-left+;
return;
}
int mid=(left+right)>>;
if (r<=mid) modify(ls[now],left,mid,l,r,p);
else if (l>=mid+) modify(rs[now],mid+,right,l,r,p);
else
{
modify(ls[now],left,mid,l,mid,p);
modify(rs[now],mid+,right,mid+,r,p);
}
sum[now]=sum[ls[now]]+sum[rs[now]];
}
void work0(int x)
{
int len=p[x].r-p[x].l+,lenr=query(root,,n,p[x].l,p[x].r);
if (p[x].l<=p[x].l+(len-lenr)-) modify(root,,n,p[x].l,p[x].l+(len-lenr)-,);
if (p[x].l+(len-lenr)<=p[x].r) modify(root,,n,p[x].l+(len-lenr),p[x].r,);
}
void work1(int x)
{
int len=p[x].r-p[x].l+,lenl=query(root,,n,p[x].l,p[x].r);
if (p[x].l<=p[x].l+lenl-) modify(root,,n,p[x].l,p[x].l+lenl-,);
if (p[x].l+lenl<=p[x].r) modify(root,,n,p[x].l+lenl,p[x].r,);
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)
{
scanf("%d",&a[i]);
l=min(l,a[i]);
r=max(r,a[i]);
}
for (int i=;i<=m;i++)
scanf("%d%d%d",&p[i].type,&p[i].l,&p[i].r);
scanf("%d",&q);
while (l<=r)
{
tot=;
mi=(l+r)>>;
build(root,,n);
for (int i=;i<=m;i++)
{
if (p[i].type==) work0(i);
else work1(i);
}
int regis=query(root,,n,q,q);
if (regis==) {ans=mi;l=mi+;}
else r=mi-;
}
printf("%d\n",ans);
return ;
}

BZOJ 4552 排序的更多相关文章

  1. BZOJ 4552 排序 Heoi2016

    记得当年省选的时候 这道题连暴力都没写对(尴尬ing) (当年天真的认为sort是左闭右闭的hhhhhh) 思路: 首先 二分答案 线段树 首先二分答案,然后需要知道进行m次排序后p位置上的数字是否大 ...

  2. BZOJ 4552: [Tjoi2016&Heoi2016]排序

    4552: [Tjoi2016&Heoi2016]排序 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 579  Solved: 322[Sub ...

  3. bzoj 4552 [Tjoi2016&Heoi2016]排序 (二分答案 线段树)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4552 题意: 给你一个1-n的全排列,m次操作,操作由两种:1.将[l,r]升序排序,2 ...

  4. BZOJ 4552 [Tjoi2016&Heoi2016]排序 线段树的分裂和合并

    https://www.lydsy.com/JudgeOnline/problem.php?id=4552 https://blog.csdn.net/zawedx/article/details/5 ...

  5. bzoj 4552 [Tjoi2016&Heoi2016]排序——二分答案

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4552 二分答案,把 >= mid 的设成1.< mid 的设成0,之后排序就变成 ...

  6. BZOJ 4552 [Tjoi2016&Heoi2016]排序 | 二分答案 线段树

    题目链接 题面 题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...

  7. BZOJ 4552: [Tjoi2016&Heoi2016]排序 线段树 二分

    目录 此代码是个假代码,只能糊弄luogu,以后再改,路过大佬也可以帮一下辣 update 10.6 此代码是个假代码,只能糊弄luogu,以后再改,路过大佬也可以帮一下辣 /* //fang zhi ...

  8. bzoj 4552: [Tjoi2016&Heoi2016]排序——二分+线段树

    Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...

  9. 排序(bzoj 4552)

    Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...

随机推荐

  1. 关于android的分辨率

    关于Android的分辨率支持,为大家翻译官方文档 看世界杯的空闲时间,翻译一下官方文档.分辨率问题是大家都很关心的(720×480会不会悲剧),而关于这个问题,android官方的文档无疑最有说服力 ...

  2. Ehcache使用

    http://www.360doc.com/content/14/0423/17/16946725_371472946.shtml http://www.myexception.cn/web-appl ...

  3. 基础DOM和CSS操作(二)

    元素样式操作 元素样式操作包括了直接设置CSS样式.增加CSS类别.类别切换.删除类别这几种操作方法.而在整个jQuery使用频率上来看,CSS样式的操作也是极高的,所以需要重点掌握. CSS操作方法 ...

  4. JDBC第一次学习

     JDBC(Java Data Base Connectivity,java数据库连接),由一些类和接口构成的API,它是J2SE的一部分,由java.sql,javax.sql包组成. 应用程序.J ...

  5. 李洪强iOS开发之OC[008] -创建一个对象并访问实例变量

    // //  main.m //  07 - 创建一个对象并且访问实例变量 // //  Created by vic fan on 16/7/3. //  Copyright © 2016年 李洪强 ...

  6. java多线程浅谈

    当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 分这几种情况:    1.其他方法前是否加了synchronized关键字,如果没加,则能.    2 ...

  7. PHP:错误 Deprecated: Function split() is deprecated in ... 解决办法

    PHP:错误 Deprecated: Function split() is deprecated in ... 解决办法 PHP5.3 split() 不建议使用的原因:PHP 5.3.0 之后的r ...

  8. 8 simple things that will make you sexy

    8 simple things that will make you sexy8种方法教你不动声色的性感What makes a women sexy? Is it her body? Is it t ...

  9. awk过滤统计不重复的行

    awk以‘\t’为分隔符区分列 cat logs | grep IconsendRedirect | grep 1752 | awk -F'\t' '{print $8}'| wc -l awk过滤统 ...

  10. uploadify IO Error/http error 413

    阿里云的服务器 linux 服务器,php 环境,上传附件问题,记录分享一下: 开始测试的时候,都是图片,小附件,没什么问题 系统上线后,发现大的附件上传 有问题,报错 IO Error 开始检查程序 ...