day 1 晚上 P2824 [HEOI2016/TJOI2016]排序 线段树
#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]排序 线段树的更多相关文章
- [Luogu P2824] [HEOI2016/TJOI2016]排序 (线段树+二分答案)
题面 传送门:https://www.luogu.org/problemnew/show/P2824 Solution 这题极其巧妙. 首先,如果直接做m次排序,显然会T得起飞. 注意一点:我们只需要 ...
- 洛谷$P2824\ [HEOI2016/TJOI2016]$ 排序 线段树+二分
正解:线段树+二分 解题报告: 传送门$QwQ$ 昂着题好神噢我$jio$得$QwQQQQQ$,,, 开始看到长得很像之前考试题的亚子,,,然后仔细康康发现不一样昂$kk$,就这里范围是$[1,n]$ ...
- Luogu P2824 [HEOI2016/TJOI2016]排序 线段树+脑子
只会两个$log$的$qwq$ 我们二分答案:设答案为$ans$,则我们把$a[i]<=ans$全部设成$0$,把$a[i]>ans$全部设成$1$,扔到线段树里,这样区间排序(升序)就是 ...
- [HEOI2016/TJOI2016]排序 线段树+二分
[HEOI2016/TJOI2016]排序 内存限制:256 MiB 时间限制:6000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而 ...
- luoguP2824 [HEOI2016/TJOI2016]排序(线段树分裂做法)
题意 所谓线段树分裂其实是本题的在线做法. 考虑如果我们有一个已经排好序的区间的权值线段树,那么就可以通过线段树上二分的方法得到第\(k\)个数是谁. 于是用set维护每个升序/降序区间的左右端点以及 ...
- BZOJ.4552.[HEOI2016/TJOI2016]排序(线段树合并/二分 线段树)
题目链接 对于序列上每一段连续区间的数我们都可以动态开点建一棵值域线段树.初始时就是\(n\)棵. 对于每次操作,我们可以将\([l,r]\)的数分别从之前它所属的若干段区间中分离出来,合并. 对于升 ...
- 洛谷 P2824 [HEOI2016/TJOI2016]排序 解题报告
P2824 [HEOI2016/TJOI2016]排序 题意: 有一个长度为\(n\)的1-n的排列\(m\)次操作 \((0,l,r)\)表示序列从\(l\)到\(r\)降序 \((1,l,r)\) ...
- 洛谷P2824 [HEOI2016/TJOI2016]排序(线段树)
传送门 这题的思路好清奇 因为只有一次查询,我们考虑二分这个值为多少 将原序列转化为一个$01$序列,如果原序列上的值大于$mid$则为$1$否则为$0$ 那么排序就可以用线段树优化,设该区间内$1$ ...
- 洛谷 P2824 [HEOI2016/TJOI2016]排序 (线段树合并)
(另外:题解中有一种思路很高妙而且看上去可以适用一些其他情况的离线方法) 线段树合并&复杂度的简单说明:https://blog.csdn.net/zawedx/article/details ...
随机推荐
- 最简单的JS实现json转csv
工作久了,总会遇到各种各样的数据处理工作,比如同步数据,初始化一些数据,目前比较流行的交互数据格式就是JSON,可是服务器中得到的JSON数据如果提供给业务人员看的话可能会非常不方便,这时候,转成CS ...
- Executor线程池原理详解
线程池 线程池的目的就是减少多线程创建的开销,减少资源的消耗,让系统更加的稳定.在web开发中,服务器会为了一个请求分配一个线程来处理,如果每次请求都创建一个线程,请求结束就销毁这个线程.那么在高并发 ...
- [转] Java 无界阻塞队列 DelayQueue 入门实战
原文出处:http://cmsblogs.com/ 『chenssy』 DelayQueue是一个支持延时获取元素的无界阻塞队列.里面的元素全部都是"可延期"的元素,列头的元素是最 ...
- .NET Core使用gRPC打造服务间通信基础设施
一.什么是RPC rpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制. 利用这种传输机制,不同进程(或服务)间像调用本地进程中 ...
- docker的使用之镜像命令
说明 Docker运行容器前需要本地存在对应的镜像 ,如果镜像不存在本地,Docker会从镜像仓库下载 获取镜像 通过网址可以找到目标镜像 https://hub.docker.com/explore ...
- 小白学 Python(4):变量基础操作
人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 前面的文章中,我们介绍了 ...
- 前端深入之css篇丨初探【transform】,手把手带你实现1024程序员节动画
写在前面 马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所 ...
- c++11::std::decltype/declval
decltype ( 实体 ) () (C++ 起) decltype ( 表达式 ) () (C++ 起) 若实参是其他类型为 T 的任何表达式,且 a) 若 表达式 的值类别为亡值,则 declt ...
- ESP8266开发之旅 网络篇⑯ 无线更新——OTA固件更新
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 玩转ArduinoJson库 V5版本
1.前言 一直以来,博主的事例代码中都一直使用到JSON数据格式.而很多初学者一直对JSON格式有很大疑惑,所以博主特意分出一篇博文来重点讲解Arduino平台下的JSON库--Arduino ...