【题解】Luogu CF817F MEX Queries
原题传送门
817,我突然想到了某8位质数
这题珂以说是珂朵莉树的模板
三个操作都肥肠简单,前两个区间赋值,第三个区间0变1,1变0
每次输出从头开始扫描就行(我忘了珂朵莉树的性质,竟然还动态维护最左边0的位置)
#include <bits/stdc++.h>
#define getchar nc
#define ll long long
#define IT set<node>::iterator
using namespace std;
inline char nc(){
static char buf[100000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline ll read()
{
register ll x=0,f=1;register char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*f;
}
inline void write(register ll x)
{
if(!x)putchar('0');if(x<0)x=-x,putchar('-');
static int sta[25];register int tot=0;
while(x)sta[tot++]=x%10,x/=10;
while(tot)putchar(sta[--tot]+48);
}
inline ll Min(register ll a,register ll b)
{
return a<b?a:b;
}
struct node
{
ll l,r;
mutable bool v;
node(ll L, ll R=-1, bool V=0):l(L), r(R), v(V) {}
bool operator<(const node& o) const
{
return l < o.l;
}
};
set<node> s;
ll ans=1;
inline IT split(register ll pos)
{
IT it = s.lower_bound(node(pos));
if (it != s.end() && it->l == pos)
return it;
--it;
ll L = it->l, R = it->r;
bool V = it->v;
s.erase(it);
s.insert(node(L, pos-1, V));
return s.insert(node(pos, R, V)).first;
}
inline void findnext()
{
IT it = split(ans);
for(;;++it)
if(!it->v)
{
ans=it->l;
return;
}
}
inline void assign_val(register ll l,register ll r,register bool val)
{
IT itr = split(r+1),itl = split(l);
s.erase(itl, itr);
s.insert(node(l, r, val));
if(val&&l<=ans&&ans<=r)
findnext();
else if(!val)
ans=Min(ans,l);
}
inline void reverse(register ll l,register ll r)
{
IT itr = split(r+1),itl = split(l);
bool f=true;
if(l<=ans&&ans<=r)
{
for(; itl != itr; ++itl)
{
itl->v^=1;
if(f&&!itl->v)
{
f=false;
ans=itl->l;
}
}
if(f)
findnext();
}
else
for(; itl != itr; ++itl)
{
itl->v^=1;
if(f&&!itl->v)
{
f=false;
ans=Min(ans,itl->l);
}
}
}
int main()
{
int q=read();
s.insert(node(1,1e19,0));
while(q--)
{
int opt=read();
ll l=read(),r=read();
if(opt==1)
assign_val(l,r,1);
else if(opt==2)
assign_val(l,r,0);
else
reverse(l,r);
write(ans),puts("");
}
return 0;
}
【题解】Luogu CF817F MEX Queries的更多相关文章
- CF817F MEX Queries(线段树上二分)
题意 维护一个01串,一开始全部都是0 3种操作 1.把一个区间都变为1 2.把一个区间都变为0 3.把一个区间的所有数字翻转过来 每次操作完成之后询问区间最小的0的位置 l,r<=10^18 ...
- CF817F MEX Queries
嘟嘟嘟 这题一直在我的某谷任务计划里,不知为啥一直没做. 现在看起来很水啊,就是离散化+线段树.可能是当时没想明白怎么离散化吧. 就是先把算有区间端点都离线下来,然后把\(l - 1, l, l + ...
- [Codeforces]817F. MEX Queries 离散化+线段树维护
[Codeforces]817F. MEX Queries You are given a set of integer numbers, initially it is empty. You sho ...
- Educational Codeforces Round 23 F. MEX Queries 离散化+线段树
F. MEX Queries time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- [题解] Luogu P5446 [THUPC2018]绿绿和串串
[题解] Luogu P5446 [THUPC2018]绿绿和串串 ·题目大意 定义一个翻转操作\(f(S_n)\),表示对于一个字符串\(S_n\), 有\(f(S)= \{S_1,S_2,..., ...
- 题解 Luogu P2499: [SDOI2012]象棋
关于这道题, 我们可以发现移动顺序不会改变答案, 具体来说, 我们有以下引理成立: 对于一个移动过程中的任意一个移动, 若其到达的位置上有一个棋子, 则该方案要么不能将所有棋子移动到最终位置, 要么可 ...
- 题解 luogu P1144 【最短路计数】
本蒟蒻也来发一次题解第一篇请见谅 这个题有几个要点 1.无向无权图,建图的时候别忘记建来回的有向边[因此WA掉1次 2.无权嘛,那么边长建成1就好了2333333 3.最短路采用迪杰斯特拉(别忘用堆优 ...
- codeforces:MEX Queries分析和实现
首先说明一下MEX,设S是自然数集合N的一个子集,那么S的MEX则为min(N\S),即不包含于S的最小自然数. 题目大意是存在一个空集S,提供n组输入(n<10^5),每组输入对应下面的一个指 ...
- 题解 Luogu P1110 【[ZJOI2007]报表统计】
感谢 @cmy962085349 提供的hack数据,已经改对了. 先声明,我好像是题解里写双$fhq$ $treap$里唯一能过的...(最后两个点啊) 思路:首先看题目,$MIN_GAP_SORT ...
随机推荐
- disconf安装问题
安装参考文档:https://blog.csdn.net/fengyao1995/article/details/66491226 主要说说遇到的几个问题 1.在步骤6构建的时候,用jdk1.8,进行 ...
- 聚焦AI实践,2019 A2M峰会将在上海举行!
18年,BERT重磅发布,刷新了很多NLP的任务的最好性能:KENSHO等智能化应用的成功应用,让知识图谱在证券行业的建设思路和应用实践成为业内较为关注的问题:强化学习也在与人类的对战游戏中独领风骚: ...
- 1python简介
02 python和03 python的区别: python:优美,清晰,简单. python2x: 源码重复,混乱,冗余. 源码不规范. python3x: 源码整合,优美,清晰 ...
- 动态规划 hdu 1024
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- mvc模式的理解
一开始总是觉得dao层和service层没有区别,甚至觉得service层根本就是多余的,service层就是把dao层的内容调用了一下,然后重写了一次,后来才理解到,dao层是数据链路层,是与数据库 ...
- 20175303 Mycp实现Linux下cp xxx1 xxx2的功能
20175303 Mycp实现Linux下cp xxx1 xxx2的功能 一.题目要求 编写MyCP2.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP2支持两个参数: ja ...
- [daily][archlinux] TODO LIST
reminder: https://wikemacs.org/wiki/Buffer_management TO READ: https://www.kernel.org/doc/htmldocs/k ...
- APICloud开发者进阶之路 | txLive模块(直播类)试用分享
本文出自APICloud官方论坛,感谢论坛版主uoaccw的分享 txLive 模块封装了腾讯云直播服务 https://docs.apicloud.com/Client-API/Open-SDK/t ...
- css table之合并单元格
colspan 是合并列,rowspan是合并行,合并行的时候,比如rowspan="2",它的下一行tr会少一列:合并列的时候 colspan="2",此行的 ...
- Django 分组 聚合
base_sql = Order.objects.filter(is_paid=True, merchant=merchant_id) # 如果aggregate前没有values,得到的结果是一个字 ...