题目描述

用线段树维护三个值:区间最长空位长度,从左端点可以延伸的最长空位长度,从右端点可以延伸的最长空位长度。

#include<complex>
#include<cstdio>
using namespace std;
const int N=2e6+;
int n,m;
int len[N],Max[N],maxl[N],maxr[N],lazy[N];
int qread()
{
int x=;
char ch=getchar();
while(ch<'' || ch>'')ch=getchar();
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x;
}
void PushUp(int rt)
{
if(Max[rt<<]==len[rt<<])maxl[rt]=Max[rt<<]+maxl[rt<<|];
else maxl[rt]=maxl[rt<<];
if(Max[rt<<|]==len[rt<<|])maxr[rt]=Max[rt<<|]+maxr[rt<<];
else maxr[rt]=maxr[rt<<|];
Max[rt]=max(max(Max[rt<<],Max[rt<<|]),maxr[rt<<]+maxl[rt<<|]);
}
void PushDown(int rt)
{
if(!lazy[rt])return;
lazy[rt<<]=lazy[rt<<|]=lazy[rt];
if(lazy[rt]==)
{
Max[rt<<]=maxl[rt<<]=maxr[rt<<]=;
Max[rt<<|]=maxl[rt<<|]=maxr[rt<<|]=;
}
else
{
Max[rt<<]=maxl[rt<<]=maxr[rt<<]=len[rt<<];
Max[rt<<|]=maxl[rt<<|]=maxr[rt<<|]=len[rt<<|];
}
lazy[rt]=;
}
void Build(int l,int r,int rt)
{
maxl[rt]=maxr[rt]=Max[rt]=len[rt]=r-l+;
if(l==r)return;
int mid=l+r>>;
Build(l,mid,rt<<);Build(mid+,r,rt<<|);
}
void Modify(int l,int r,int rt,int nowl,int nowr,int v)
{
if(nowl<=l && r<=nowr)
{
if(v==)Max[rt]=maxl[rt]=maxr[rt]=;
else Max[rt]=maxl[rt]=maxr[rt]=len[rt];
lazy[rt]=v;
return;
}
PushDown(rt);
int mid=l+r>>;
if(nowl<=mid)Modify(l,mid,rt<<,nowl,nowr,v);
if(mid<nowr)Modify(mid+,r,rt<<|,nowl,nowr,v);
PushUp(rt);
}
int Query(int l,int r,int rt,int p)
{
if(l==r)return l;
PushDown(rt);
int mid=l+r>>;
if(Max[rt<<]>=p)return Query(l,mid,rt<<,p);
if(maxr[rt<<]+maxl[rt<<|]>=p)return mid-maxr[rt<<]+;
return Query(mid+,r,rt<<|,p);
}
int main()
{
scanf("%d%d",&n,&m);
Build(,n,);
int p,l,r,x;
while(m--)
{
p=qread();
if(p==)
{
x=qread();
if(Max[]<x){puts("");continue;}
int tot=Query(,n,,x);
printf("%d\n",tot);
Modify(,n,,tot,tot+x-,);
}
else
{
l=qread();r=qread();
Modify(,n,,l,l+r-,);
}
}
return ;
}

洛谷 P2894 [USACO08FEB]酒店的更多相关文章

  1. 洛谷P2894 [USACO08FEB]酒店Hotel

    P2894 [USACO08FEB]酒店Hotel https://www.luogu.org/problem/show?pid=2894 题目描述 The cows are journeying n ...

  2. 洛谷 P2894 [USACO08FEB]酒店Hotel-线段树区间合并(判断找位置,不需要维护端点)+分治

    P2894 [USACO08FEB]酒店Hotel 题目描述 The cows are journeying north to Thunder Bay in Canada to gain cultur ...

  3. 洛谷 P2894 [USACO08FEB]酒店Hotel 解题报告

    P2894 [USACO08FEB]酒店Hotel 题目描述 The cows are journeying north to Thunder Bay in Canada to gain cultur ...

  4. 洛谷P2894 [USACO08FEB]酒店Hotel [线段树]

    题目传送门 酒店 题目描述 The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and ...

  5. 区间连续长度的线段树——洛谷P2894 [USACO08FEB]酒店Hotel

    https://www.luogu.org/problem/P2894 #include<cstdio> #include<iostream> using namespace ...

  6. 洛谷P2894[USACO08FEB]酒店Hotel(线段树)

    问题描述 奶牛们最近的旅游计划,是到苏必利尔湖畔,享受那里的湖光山色,以及明媚的阳光.作为整个旅游的策划者和负责人,贝茜选择在湖边的一家著名的旅馆住宿.这个巨大的旅馆一共有N (1 <= N & ...

  7. 洛谷 P2894 [USACO08FEB]酒店Hotel

    题目描述 The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a ...

  8. 洛谷P2894 [USACO08FEB]酒店Hotel_区间更新_区间查询

    Code: #include<cstdio> #include<algorithm> #include<cstring> using namespace std; ...

  9. 线段树【洛谷P2894】 [USACO08FEB]酒店Hotel

    P2894 [USACO08FEB]酒店Hotel 参考样例,第一行输入n,m ,n代表有n个房间,编号为1---n,开始都为空房,m表示以下有m行操作,以下 每行先输入一个数 i ,表示一种操作: ...

随机推荐

  1. www.qtbig.com:QList的at与[]10亿次运行速度比较(运行速度at都优于[],但区别不大)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/nicai_xiaoqinxi/artic ...

  2. M-SOLUTIONS Programming Contest

    A.(n-2)*180 #include<cstdio> #include<cstring> #include<iostream> #include<algo ...

  3. 转:深入浅出Java垃圾回收机制

    原文链接:http://www.importnew.com/1993.html 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解G ...

  4. DataGrip License server

    之前用 Resharper 使用 http://xidea.online 来激活 今天下载一个DataGrip 发现不能使用这个地址,不知道是被封杀了还是不能跟 Resharper 的共用 在网上找到 ...

  5. Java 之 Servlet中的生命周期

    Servlet 生命周期 一.重写servlet方法 当创建一个类,继承 servlet 这个接口时,需要实现里面的抽象方法. import javax.servlet.*; import java. ...

  6. UCOSIII事件标志组

    两种同步机制 "或"同步 "与"同步 使能 #define OS_CFG_FLAG_EN 1u /* Enable (1) or Disable (0) cod ...

  7. jenkins 启动

    docker pull jenkinsci/blueocean docker run \ -u root \ --rm \ -d \ -p 8888:8080 \ -p 50000:50000 \ - ...

  8. php error_log记录日志的使用方法--拿来即用,超简单

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 如果对你有帮助的话麻烦点个[推荐]~最好还可以follow一下我的GitHub~感谢观看! 对 ...

  9. 【DRF框架】认证组件

    DRF框架的认证组件 核心代码:       self.perform_authentication(request)  框架自带模块:    from rest_framework import a ...

  10. Linux GRUB手动安装方法详解

    需要手工安装 GRUB 主要有两种情况: Linux 系统原先不是使用 GRUB 作为引导程序而现在想要使用 GRUB 来作为引导程序: MBR 中的引导程序被覆盖,需要在 MBR 中重新安装 GRU ...