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 ...
随机推荐
- .net cookie跨域请求指定请求域名
HttpCookie cookie = new HttpCookie("OrderApiCookie"); //初使化并设置Cookie的名称 cookie.HttpOnly = ...
- 最新打赏正版V15微信视频打赏源码 带(百倍)暗雷 N秒试看 自动切换域名 自动防封
免签支付域名防封随机跳转盒子推广设置试看N秒百倍 平台搭建:乌龟-源码科技QQ:64430146 全新版本 V15打赏版本功能介绍: 特别注意: 新增加功能!!!! 1.包括V14所有功能(除个别因优 ...
- Travis CI持续集成使用
用好这个工具不仅可以提高效率,还能使开发流程更可靠和专业化,从而提高软件的价值.而且,它对于开源项目是免费的,不花一分钱,就能帮你做掉很多事情. 一.什么是持续集成? Travis CI 提供的是持续 ...
- 帝国CMS 6.5功能解密:网站安全防火墙使用说明
有关帝国CMS新版防火墙介绍可以查看:http://bbs.phome.net/showthread-13-136169-0.html 本文为大家讲解如何使用网站防火墙:一.配置“网站防火墙”有下面两 ...
- 渗透-svn源代码泄露漏洞综合利用
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subversion ...
- cobalt strike批量发送钓鱼邮件
0×01 利用Cobalt strike生成木马 这里我们生成木马可以用cs带的HTA.OFFICE宏.word宏来使目标上线cs,这里以word宏病毒为例子. 首先我们需要制作一个word宏病毒来进 ...
- opencv::基于距离变换与分水岭的图像分割
什么是图像分割 图像分割(Image Segmentation)是图像处理最重要的处理手段之一 图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素. 根 ...
- 案例_(单线程)使用xpath爬取糗事百科
案例_(单线程)使用xpath爬取糗事百科 步骤如下: 首先通过xpath插件找出我们要爬取的信息的匹配规则 url = "https://www.qiushibaike.com/8hr/p ...
- NOMP矿池搭建
本文将以dash(x11)和Raven(x16rv2)为例子来说明多算法矿池的搭建过程. 1 环境准备 1.1 准备Ubuntu 准备虚拟机或物理机,操作系统为Ubuntu 16.04 1.2 安装必 ...
- openflow流表项中有关ip掩码的匹配的问题(控制器为ryu)
一.写在前面 唉,被分配到sdn安全方向,顶不住,顶不住,感觉搞不出来什么有搞头的东西.可若是让我水水的应付,我想我也是做不到的,世上无难事只怕有心人.好了,进入正题,本次要讨论的时一个比较细节的东西 ...