#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. Windows下如何调试驱动程序

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 一.配置Windbg使用双机调试 win10中“windbg+vm ...

  2. 并发新构件之CountDownLatch

    CountDownLatch译为倒计时锁存器:JDK描述     :允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助. A CountDownLatch用给定的计数初始化. awai ...

  3. Vue-CLI 项目在pycharm中配置

    Vue-CLI Vue-CLI 项目在pycharm中配置 第一步 pycharm索引到vue项目的根目录,打开 第二步 安装vue.js插件来高亮 .vue 文件代码(见插图) 第三步 第四步 配置 ...

  4. Java 面试-即时编译( JIT )

    当我们在写代码时,一个方法内部的行数自然是越少越好,这样逻辑清晰.方便阅读,其实好处远不止如此,通过即时编译,甚至可以提高执行时的性能,今天就让我们好好来了解一下其中的原理. 简介 当 JVM 的初始 ...

  5. python犯傻之题目解答思路比较与反思

    1.题目: 企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万 ...

  6. (20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)

    1.必需和可选属性 如果实体属性可以包含null,则将其视为可选.如果属性的有效值不可以包含null,则将其视为必需属性.映射到关系数据库架构时,必需的属性将创建为不可为null的列,而可选属性则创建 ...

  7. .NET Core3.0创建Worker Services

    .NET CORE 3.0新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,并且能轻松的部署成windows服务或linux守护程序.如果安装的vs2019是中文版本,W ...

  8. php能在手机上运行吗

    php能在手机上运行吗? php能在手机上运行.但是需要你的手机具有PHP运行环境. 比如一款安卓手机上面的php运行环境软件:anmpp. ANMPP是Android NGINX MYSQL PGS ...

  9. spring在IoC容器中装配Bean详解

    1.Spring配置概述 1.1.概述 Spring容器从xml配置.java注解.spring注解中读取bean配置信息,形成bean定义注册表: 根据bean定义注册表实例化bean: 将bean ...

  10. 设计模式(十六)Mediator模式

    在实际的工作小组的交流过程是,组员向仲裁者报告,仲裁者向组员下达指示,组员之间不再互相询问和指示.Mediator模式是指,当发生麻烦事情的时候,通知仲裁者:当发生涉及全体组员的事情时,也通知仲裁者. ...