#线段树,离散#nssl 1476 联

分析
由于下标过大,考虑离散,不仅仅是区间左右端点
假设只有一个区间从1到\(x\),那么修改后答案应该是\(x+1\)
所以说还要记录右端点+1的位置,你以为这就能A了吗
为了避免标记被覆盖,无论是否找到区间,都要下传标记,并且如果当前标记为异或,
那么在修改完之后原来的标记异或抵消,全0变全1,全1变全0,查询就类似权值线段树的方法就好了
时间复杂度\(O(nlog_2n)\)
代码
#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
typedef long long lll;
const int N=300011;
int lazy[N<<2],z[N],m,n;
lll w[N<<2],b[N],l[N],r[N];
inline lll iut(){
rr lll ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void print(lll ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
inline void doit(int k,int l,int r,int z){
if (!z) return;
if (z==1) w[k]=r-l+1;
else if (z==2) w[k]=0;
else w[k]=r-l+1-w[k];
if (z==3) lazy[k]^=z;
else lazy[k]=z;
}
inline void pdown(int k,int l,int r){
if (!lazy[k]||l==r) return;
rr int mid=(l+r)>>1;
doit(k<<1,l,mid,lazy[k]);
doit(k<<1|1,mid+1,r,lazy[k]);
lazy[k]=0;
}
inline void update(int k,int l,int r,int x,int y,int z){
pdown(k,l,r);
if (l==x&&r==y){doit(k,l,r,z); return;}
rr int mid=(l+r)>>1;
if (y<=mid) update(k<<1,l,mid,x,y,z);
else if (x>mid) update(k<<1|1,mid+1,r,x,y,z);
else update(k<<1,l,mid,x,mid,z),update(k<<1|1,mid+1,r,mid+1,y,z);
w[k]=w[k<<1]+w[k<<1|1];
}
inline signed query(int k,int l,int r){
if (l==r) return l;
rr int mid=(l+r)>>1; pdown(k,l,r);
if (w[k<<1]==mid-l+1) return query(k<<1|1,mid+1,r);
else return query(k<<1,l,mid);
}
signed main(){
m=iut(),b[n=1]=1;
for (rr int i=1;i<=m;++i){
z[i]=iut(),l[i]=iut(),r[i]=iut();
b[++n]=l[i],b[++n]=r[i],b[++n]=r[i]+1;
}
sort(b+1,b+1+n),n=unique(b+1,b+1+n)-b-1;
for (rr int i=1;i<=m;++i){
l[i]=lower_bound(b+1,b+1+n,l[i])-b;
r[i]=lower_bound(b+1,b+1+n,r[i])-b;
update(1,1,n,l[i],r[i],z[i]);
print(b[query(1,1,n)]),putchar(10);
}
return 0;
}
#线段树,离散#nssl 1476 联的更多相关文章
- hdu1542 Atlantis(扫描线+线段树+离散)矩形相交面积
题目链接:点击打开链接 题目描写叙述:给定一些矩形,求这些矩形的总面积.假设有重叠.仅仅算一次 解题思路:扫描线+线段树+离散(代码从上往下扫描) 代码: #include<cstdio> ...
- [cdoj843] 冰雪奇缘 (线段树+离散)
[线段树 + 离散化] Description 艾莎女王又开始用冰雪魔法盖宫殿了. 她决定先造一堵墙,于是释放魔法让形为直角梯形的冰砖从天而降,定入冻土之中. 现在你将回答女王的询问:某段冻土上冰砖的 ...
- sdut 2159 Ivan comes again!(2010年山东省第一届ACM大学生程序设计竞赛) 线段树+离散
先看看上一个题: 题目大意是: 矩阵中有N个被标记的元素,然后针对每一个被标记的元素e(x,y),你要在所有被标记的元素中找到一个元素E(X,Y),使得X>x并且Y>y,如果存在多个满足条 ...
- 51Nod 1175 区间中第K大的数 (可持久化线段树+离散)
1175 区间中第K大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 一个长度为N的整数序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有 ...
- [POJ] 3277 .City Horizon(离散+线段树)
来自这两篇博客的总结 http://blog.csdn.net/SunnyYoona/article/details/43938355 http://m.blog.csdn.net/blog/mr_z ...
- poj City Horizon (线段树+二分离散)
http://poj.org/problem?id=3277 City Horizon Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...
- [BZOJ 1018] [SHOI2008] 堵塞的交通traffic 【线段树维护联通性】
题目链接:BZOJ - 1018 题目分析 这道题就说明了刷题少,比赛就容易跪..SDOI Round1 Day2 T3 就是与这道题类似的..然而我并没有做过这道题.. 这道题是线段树维护联通性的经 ...
- (中等) POJ 2528 Mayor's posters , 离散+线段树。
Description The citizens of Bytetown, AB, could not stand that the candidates in the mayoral electio ...
- [BZOJ4869][六省联考2017]相逢是问候(线段树+扩展欧拉定理)
4869: [Shoi2017]相逢是问候 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 1313 Solved: 471[Submit][Stat ...
- [CSP-S模拟测试]:联(小清新线段树)
题目描述 由于出题人懒所以没有背景.一个无限长的$01$序列,初始全为$0$,每次选择一个区间$[l,r]$进行操作,有三种操作:$\bullet 1\ l\ r$将$[l,r]$中所有元素变成$1$ ...
随机推荐
- [BUUCTF][WEB][极客大挑战 2019]Knife 1
这题几乎是送分 题目不断暗示,后台存在一句话木马 拿个蚁剑连上去就完事了 这里用curl 连上去,演示一下,理解一下其中的原理 #注意 phpinfo() 后面的分号不能省 curl -d " ...
- SpringBoot的自动装配原理及应用
什么是SpringBoot自动装配 所谓的"SpringBoot自动装配"就是指:通过注解和一些简单的配置就能将某些组件载入Spring容器环境中,便于使用. 比如,很多sprin ...
- 启动HDFS伪分布式环境时报权限错误
问题描述 操作系统:Ubuntu18.04 LTS HDFS版本:hadoop-3.2.3 普通用户登录,参照官方文档在单机上安装伪分布式环境时,启动HDFS报权限错误. 具体报错信息如下: $ ./ ...
- gunzip命令
解压提取文件内容 语法格式:gunzip 参数 压缩包 常用参数 -a 使用ASCII文本模式 -q 静默执行模式 -c 将解压后的文件输出到标准输出设备 -r 递归处理所有子文件 -f 强制解压文件 ...
- 【LeetCode二叉树#04】判断对称二叉树、相同的树、另一棵子树、树的子结构(二叉树相等判断)
对称二叉树 力扣题目链接(opens new window) 给定一个二叉树,检查它是否是镜像对称的. 思路 本题中,不能单纯去比较左右子节点的是否对称(都有值且不为空) 因为如果按上面那样做的话,到 ...
- Finder Error code -36 “访达” 错误代码-36
导致这个问题的原因是你的iCloud (iCloud和iCloud Drive是不一样的) 快满了. 如果你想解决这个问题,有以下三个方法: 1.多买苹果iCloud.(是的,苹果现在太恶心了.但这是 ...
- 【Azure ACR+App Service】ACR WebHook请求App Service时遇见 401 Unauthorized
问题描述 App Service 支持从ACR中直接拉取镜像,并且可以配置持续部署(Continuous Deployment), 它是通过在ACR中添加一个Webhook,然后发送POST请求到 & ...
- 【Azure Redis 缓存】Redis的监控方式? 是否有API接口调用来获取监控值
问题描述 对于PaaS的Azure Cache for Redis,Azure中有哪些监控方式?是否能有api接口调用来获取监控值? 问题答案 1) 在Redis的门户中,使用Metrics查看Red ...
- Glide源码解析三(注册组件)
转载请标明出处,维权必究: https://www.cnblogs.com/tangZH/p/12900387.html Glide源码解析一,初始化 Glide源码解析二-into方法 Glide源 ...
- gitlab推送代码触发jenkins构建
预期:推送devloop或者master分支的代码, 自动执行jenkins 发布测试环境 首先,jenkins中需要安装如下插件 打开一个任务配置,构建触发器中勾选"Build when ...