题目描述

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

#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. LOJ6300 博弈论与概率统计 组合、莫队

    传送门 如果在\(0\)以下之后仍然会减分,那么最后的结果一定是\(N-M\). 注意到如果在Alice分数为\(0\)时继续输,那么就相当于减少了一次输的次数.也就是说如果说在总的博弈过程中,Ali ...

  2. 玩转Spring全家桶笔记 04 Spring的事务抽象、事务传播特性、编程式事务、申明式事务

    1.Spring 的事务抽象 Spring提供了一致的事务模型 JDBC/Hibernate/Mybatis 操作数据 DataSource/JTA 事务 2.事务抽象的核心接口 PlatformTr ...

  3. JSON C# Class Generator

    http://www.xamasoft.com/json-class-generator/ JsonHelper.cs using System; using System.Collections.G ...

  4. iOS 打包静态库.a文件(真机版 + 虚拟机)

    我们以打包IOS开发中封装的高地地图基础功能包 GDMap为例. 1>我们需要准备好需要打包的GDMap     2>接下来我们开始新建一个工程文件取名GDMap     3>删掉无 ...

  5. redux的理解

    Redux 这里介绍下我对Redux的理解,不涉及如何使用Redux. Redux 官网介绍: A predictable state container for JavaScript apps.(一 ...

  6. UCOSIII优先级反转

    反转现象 任务优先级:H>M>L 绿色部分:任务占用共享资源 理想状态:7释放信号量后,最高优先级H任务抢占CPU 反转原因:H和L等待同一个信号量,H的任务优先级被降至和L相同优先级,此 ...

  7. HDFS-SecondaryNameNode(SNN)角色介绍

    它出现在Hadoop1.x版本中,又称辅助NameNode,在Hadoop2.x以后的版本中此角色消失.如果充当datanode节点的一台机器宕机或者损害,其数据不会丢失,因为备份数据还存在于其他的d ...

  8. laravel使用withCount获取列表下关联模型的数量

    模型里面 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model ...

  9. Mac 修改hostname

    mac终端上输入命令: sudo scutil --set HostName newname # 实例 sudo scutil --set HostName master

  10. Flask之基础

    一,flask Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求 ...