正题


题目大意

无限长的010101序列,每次进行一个操作

  1. 区间内赋值为000
  2. 区间内赋值为111
  3. 区间取反

求第一个000的位置


解题思路

离散化(储存每个区间的左右端点和他们加一之后的值)后可以用线段树储存第一个000和第一个111的位置。然后区间取反时就交换两个值并且让lazylazylazy标记同样取反即可

时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=4e5+10;
ll n,m,l[N],r[N],op[N],a[N];
ll minw[N*4],minb[N*4],lazy[N*4];
void Downdata(ll x,ll l,ll r,ll op){if(op==3&&lazy[x]){if(lazy[x]==1)lazy[x]=2;else if(lazy[x]==2)lazy[x]=1;else if(lazy[x]==3)lazy[x]=0;}else lazy[x]=op;if(op==1)minw[x]=l,minb[x]=n+1;else if(op==2)minw[x]=n+1,minb[x]=l;else swap(minw[x],minb[x]);return;
}
void Change(ll x,ll L,ll R,ll l,ll r,ll op){if(L==l&&R==r){Downdata(x,l,r,op);return;}ll mid=(L+R)>>1;if(lazy[x]){Downdata(x*2,L,mid,lazy[x]);Downdata(x*2+1,mid+1,R,lazy[x]);lazy[x]=0;}if(r<=mid)Change(x*2,L,mid,l,r,op);else if(l>mid)Change(x*2+1,mid+1,R,l,r,op);else Change(x*2,L,mid,l,mid,op),Change(x*2+1,mid+1,R,mid+1,r,op);minw[x]=min(minw[x*2],minw[x*2+1]);minb[x]=min(minb[x*2],minb[x*2+1]);return;
}
int main()
{scanf("%lld",&m);for(ll i=1;i<=m;i++){scanf("%lld%lld%lld",&op[i],&l[i],&r[i]);a[++n]=l[i];a[++n]=r[i];a[++n]=l[i]+1;a[++n]=r[i]+1;}a[++n]=1;sort(a+1,a+1+n);n=unique(a+1,a+1+n)-a-1;a[n+1]=a[n]+1;for(ll i=1;i<N*4;i++)minb[i]=minw[i]=n+1;Change(1,1,n,1,n,2);for(ll i=1;i<=m;i++){l[i]=lower_bound(a+1,a+1+n,l[i])-a;r[i]=lower_bound(a+1,a+1+n,r[i])-a;Change(1,1,n,l[i],r[i],op[i]);printf("%lld\n",a[minb[1]]);}
}

nssl1476-联【线段树】相关推荐

  1. BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)

    BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已 ...

  2. [九省联考2018]IIIDX 贪心 线段树

    ~~~题面~~~ 题解: 一开始翻网上题解看了好久都没看懂,感觉很多人都讲得不太详细,所以导致一些细节的地方看不懂,所以这里就写详细一点吧,如果有不对的or不懂的可以发评论在下面. 首先有一个比较明显 ...

  3. 【九省联考2018】秘密袭击【树形dp】【生成函数】【线段树合并】【多项式插值】

    题意:nnn 个点的带点权的树,点权最大值为 www,求所有连通子图第 kkk 大权值之和模 641236412364123. n,w≤1666n,w\leq 1666n,w≤1666,时限 5s. ...

  4. [多校联考-西南大学附中]切面包(线段树/概率与期望)+ Slow Path Finding Algorithm(拓扑排序/DP)+ 分数转化(数论)

    文章目录 T1:分数转换 题目 题解 代码实现 T2:Slow Path Finding Algorithm 题目 题解 代码实现 T3:切面包 题目 题解 代码实现 T1:分数转换 题目 Time ...

  5. 【BZOJ5249】【九省联考2018】—IIIDX(线段树)

    传送门 题意:给你一座森林和一堆权值,要把每个权值分配给点,要保证儿子不小于父亲的权值,问字典序最大的方案 开始第一眼以为是傻逼题,结果交上去果断挂掉 因为在有权值相同的情况,比如说n=4,k=2,d ...

  6. [六省联考2017]相逢是问候(线段树+拓展欧拉定理)

    好题啊! 调了一个中午,发现有一条语句 \(RE\) 了.在 \(windows\) 下没关系,\(linux\) 下有问题,大大的问题. while(phi[tot]!=1) phi[++tot]= ...

  7. jzoj4240 [五校联考5day2]游行 拓扑排序+倍增lca+线段树优化建图

    Description 恶梦是学校里面的学生会主席.他今天非常的兴奋,因为学校一年一度的学生节开始啦!! 在这次节日上总共有N个节目,并且总共也有N个舞台供大家表演.其中第i个节目的表演时间为第i个单 ...

  8. hdu-3071 Gcd Lcm game---质因数分解+状态压缩+线段树

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3071 题目大意: 给定一个长度为n的序列m次操作,操作的种类一共有三种 查询 L :查询一个区间的所 ...

  9. [LNOI] 相逢是问候 || 扩展欧拉函数+线段树

    原题为2017六省联考的D1T3 给出一个序列,m次操作,模数p和参数c 操作分为两种: 1.将[l,r]区间内的每个数x变为\(c^x\) 2.求[l,r]区间内数的和%p 首先,我们要了解一些数论 ...

  10. 【bzoj1146】 [CTSC2008]网络管理Network【树链剖分+树套树+二分 线段树套Treap】

    1146: [CTSC2008]网络管理Network Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公 ...

最新文章

  1. CTFshow 命令执行 web35
  2. 不显示参数名_第51p,万能参数与返回值,Python中函数的返回值
  3. MITK医学Python开发入门详细版
  4. 后台管理系统框架bootstrap中文版
  5. Fckeditor漏洞汇总
  6. NB-IoT将给智能锁行业带来哪些影响?
  7. python函数isdisjoint方法_Python中的isdisjoint()函数
  8. Lync Server新特性
  9. Xcode6 - 更改项目Copyright
  10. Mask rcnn介绍
  11. java环境安装包_超详细的EFK安装部署教程--环境准备篇
  12. Depix从像素化屏幕快照中恢复密码
  13. python如何计算等额本息还款_等额本息还款方式计算
  14. action mutation 调用_Vuex源码学习(七)action和mutation如何被调用的(调用篇)
  15. UE4天气效果加白天黑夜的平滑过度切换
  16. SEM数据分析之做好关键词报告
  17. turtle绘制八边形、八角边形
  18. 2018年第16周-ZooKeeper基本概念(配搭建过程和Master-Workers例子)
  19. 提升OneDrive空间
  20. 湖北省中小学网络考试中心 html,中小学教师资格网登录入口|ie浏览器

热门文章

  1. java.awt.headless_以编程方式设置java.awt.headless = true
  2. linux 装nano命令,linux下安装 nano 如果没有这个命令的话~~可以看下
  3. js vue中得延时器_Vue.js实现时分秒倒计时
  4. c语言 java 性能 测试_这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第...
  5. # 保持最外层获取焦点_大事件!沈阳爱尔白内障焕晶诊疗中心正式启用,两位PanOptix三焦点人工晶体植入患者清晰见证!...
  6. 计算机组成原理第04章在线测试,计算机组成原理第四章单元测试(二)(含答案).docx...
  7. git使用的基本流程_git命令的基本使用
  8. JVM笔记详解之垃圾回收器
  9. [mybatis]Mapper XML Files_CUD
  10. C++set容器去重法