#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
using namespace std;
const int maxn=1e6+; struct node
{
int l;
int r;
int value;
int lazy;
}tree[maxn];
int q;
struct tre
{
int a,b,c;
}o[maxn];
int n,m;
int lllll;
int a[maxn];
void pushup(int x)
{
tree[x].value=tree[x<<].value+tree[x<<|].value;
} void pushdown(int x)
{
if(tree[x].lazy!=-)
{
tree[x<<].lazy=tree[x].lazy;
tree[x<<|].lazy=tree[x].lazy;
tree[x<<].value=(tree[x<<].r-tree[x<<].l+)*tree[x].lazy;
tree[x<<|].value=(tree[x<<|].r-tree[x<<|].l+)*tree[x].lazy;
tree[x].lazy=-;
}
if(tree[x].l<tree[x].r)
{
pushup(x);
}
}
void build(int x,int l,int r)
{
tree[x].l=l;
tree[x].r=r;
tree[x].lazy=-;
if(l==r)
{
tree[x].value=a[l]>lllll;
return ;
}
int mid=(l+r)>>;
build(x<<,l,mid);
build(x<<|,mid+,r);
pushup(x);
}
int query(int x,int ls,int rs)
{
int l=tree[x].l;
int r=tree[x].r;
int mid=(l+r)>>;
pushdown(x);
if(ls<=l&&r<=rs)
{
return tree[x].value;
}
int ans=;
if(ls<=mid)
{
ans+=query(x<<,ls,rs);
}
if(rs>mid)
{
ans+=query(x<<|,ls,rs);
}
return ans;
}
void modify(int x,int ls,int rs,int c)
{
int l=tree[x].l;
int r=tree[x].r;
int mid=(l+r)>>;
pushdown(x);
if(ls<=l&&r<=rs)
{
tree[x].value=(r-l+)*c;
tree[x].lazy=c;
return ;
}
if(ls<=mid)
{
modify(x<<,ls,rs,c); }
if(rs>mid)
{
modify(x<<|,ls,rs,c);
}
pushup(x);
}
bool check(int x)
{
lllll=x;
build(,,n);
for(int i=;i<=m;i++)
{
int opt=o[i].a;
int x=o[i].b;
int y=o[i].c;
int tmp=query(,x,y);
if (opt == )
{
modify(,x,y-tmp,);
modify(,y-tmp+,y,);
}
else
{
modify(,x,x+tmp-,);
modify(,x+tmp,y,);
}
}
return !query(,q,q);
}
int main()
{
cin>>n>>m;
for(int i=;i<=n;i++)
{
cin>>a[i];
}
for(int i=;i<=m;i++)
{
cin>>o[i].a>>o[i].b>>o[i].c;
}
cin>>q;
int l=;
int r=n;
while(l<r)
{
int mid=l+(r-l)/;
if(check(mid))
{
r=mid;
}
else
{
l=mid+;
}
}
cout<<r<<endl;
return ;
}

day 1 晚上 P2824 [HEOI2016/TJOI2016]排序 线段树的更多相关文章

  1. [Luogu P2824] [HEOI2016/TJOI2016]排序 (线段树+二分答案)

    题面 传送门:https://www.luogu.org/problemnew/show/P2824 Solution 这题极其巧妙. 首先,如果直接做m次排序,显然会T得起飞. 注意一点:我们只需要 ...

  2. 洛谷$P2824\ [HEOI2016/TJOI2016]$ 排序 线段树+二分

    正解:线段树+二分 解题报告: 传送门$QwQ$ 昂着题好神噢我$jio$得$QwQQQQQ$,,, 开始看到长得很像之前考试题的亚子,,,然后仔细康康发现不一样昂$kk$,就这里范围是$[1,n]$ ...

  3. Luogu P2824 [HEOI2016/TJOI2016]排序 线段树+脑子

    只会两个$log$的$qwq$ 我们二分答案:设答案为$ans$,则我们把$a[i]<=ans$全部设成$0$,把$a[i]>ans$全部设成$1$,扔到线段树里,这样区间排序(升序)就是 ...

  4. [HEOI2016/TJOI2016]排序 线段树+二分

    [HEOI2016/TJOI2016]排序 内存限制:256 MiB 时间限制:6000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而 ...

  5. luoguP2824 [HEOI2016/TJOI2016]排序(线段树分裂做法)

    题意 所谓线段树分裂其实是本题的在线做法. 考虑如果我们有一个已经排好序的区间的权值线段树,那么就可以通过线段树上二分的方法得到第\(k\)个数是谁. 于是用set维护每个升序/降序区间的左右端点以及 ...

  6. BZOJ.4552.[HEOI2016/TJOI2016]排序(线段树合并/二分 线段树)

    题目链接 对于序列上每一段连续区间的数我们都可以动态开点建一棵值域线段树.初始时就是\(n\)棵. 对于每次操作,我们可以将\([l,r]\)的数分别从之前它所属的若干段区间中分离出来,合并. 对于升 ...

  7. 洛谷 P2824 [HEOI2016/TJOI2016]排序 解题报告

    P2824 [HEOI2016/TJOI2016]排序 题意: 有一个长度为\(n\)的1-n的排列\(m\)次操作 \((0,l,r)\)表示序列从\(l\)到\(r\)降序 \((1,l,r)\) ...

  8. 洛谷P2824 [HEOI2016/TJOI2016]排序(线段树)

    传送门 这题的思路好清奇 因为只有一次查询,我们考虑二分这个值为多少 将原序列转化为一个$01$序列,如果原序列上的值大于$mid$则为$1$否则为$0$ 那么排序就可以用线段树优化,设该区间内$1$ ...

  9. 洛谷 P2824 [HEOI2016/TJOI2016]排序 (线段树合并)

    (另外:题解中有一种思路很高妙而且看上去可以适用一些其他情况的离线方法) 线段树合并&复杂度的简单说明:https://blog.csdn.net/zawedx/article/details ...

随机推荐

  1. 安装Office Visio 提示Office 16 Click-to-Run Extensibility Component

    今天在安装 Office Visio 2016 时,点击安装程序,出现以下错误:   出现这个问题的原因就是你的电脑以前安装过32位的office,卸载时,注册表没有清理干净. 解决方案: 在win1 ...

  2. sech和asech--双曲正割和反双曲正割函数

    sech和asech--双曲正割和反双曲正割函数 [功能简介]求变量的双曲正割和反双曲正割. [语法格式] 1.Y=sech(X) 计算X的双曲正割,sech(x)=1/cosh(x).X可以为向量. ...

  3. 第一次 在Java课上的编程

    第一次在java课上的编程(使用参数输入求和): 代码: public class He {    public static void main(String[] args)    {       ...

  4. GUI tkinter (bind)事件篇

    """事件:1.我们的很多操作,比如我们点击了一下鼠标,这就是一 个事件,而操作系统会根据我们的相应的事件产生相应的消息, 操作系统把消息传递给我们的应用程序,然后我们的 ...

  5. 简单自定义mybatis流程!!

    ----简单自定义mybatis流程----一.首先封装daoMapperxml文件和sqlMapconfig配置文件,如何封装:(1).封装我们的Mapper.xml文件,提取名称空间namespa ...

  6. Ubuntu 终端中文回显乱码

    参考文章 : http://wiki.ubuntu.org.cn/%E4%BF%AE%E6%94%B9locale 所用 Ubuntu的版本 : 猜想是这样的: 1.字符的编码和显示时,所处的环境不是 ...

  7. 安装docker 在centos中

    http://www.imooc.com/article/16448 http://blog.csdn.net/jeffleo/article/details/70904368

  8. CentOS6.5下搭建FTP服务

    一.FTP协议 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中FT ...

  9. Go.js 没有中文文档 也没有中文demo 学起来很费劲 给大家整理一个算是详细的文档

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  10. tomcat+Apache介绍

    tomcat不是一个完整意义上的Jave EE服务器,它甚至都没有提供对哪怕是一个主要Java EE API的实现:但由于遵守apache开源协议,tomcat却又为众多的java应用程序服务器嵌入自 ...