题目描述

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

#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. Android自动化测试之Monkey 转自:LupuX

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011436666/article/details/53998332 在之前的文章Android自动 ...

  2. 2.5_Database Interface ODBC数据源及案例

    分类 用户数据源 用户创建的数据源,称为“用户数据源”.此时只有创建者才能使用,并且只能在所定义的机器上运行.任何用户都不能使用其他用户创建的用户数据源. 系统数据源 所有用户在Windows下以服务 ...

  3. 5_PHP数组_3_数组处理函数及其应用_6_数组检索函数

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 数组检索函数 1. array_keys() 函数 程序: <?php $interests[2] = &q ...

  4. iOS - Xcode中从动态库剥离不需要的架构

    自从iOS 8发布以来,开发人员已经能够利用动态库对iOS开发的好处.对于一般开发,为所有需要的架构设置一个单一的动态库是非常好的,所以您可以在所有设备和iOS模拟器上运行,而无需更改任何东西.然而, ...

  5. 【转载】 C#使用string.IsNullOrWhiteSpace方法判断字符串是否为非空字符

    在C#编程过程中,很多时候需要判断传入过来的字符串是否为Null或者空字符或者空白字符,此时就可以使用到string.IsNullOrWhiteSpace方法来判断,如果字符串为null或者空字符Em ...

  6. 用JS实现一个斗地主发牌器

    //调用随机数,在我上一篇博文讲过这一个函数. function roundNum(min = 0, max = 0) { if (!isNaN(min) && !isNaN(max) ...

  7. e.preventDefault()与e.stopPropagation()的区别

    e.stopPropagation()阻止事件冒泡<table border='1'> <tr> <td><span>冒泡事件测试</span&g ...

  8. 【雅思】【绿宝书错词本】List25~36

    List 25 ❤arable a.可耕作的 n.耕地 ❤congested a.拥挤不堪的:充塞的 ❤split v.(使)分裂,分离:(被)撕裂:裂开:劈开:分担,分享n.裂口:分化 ,分裂 ❤n ...

  9. UCOSIII软件定时器

    API函数 //创建 void OSTmrCreate (OS_TMR *p_tmr, CPU_CHAR *p_name, OS_TICK dly, OS_TICK period, OS_OPT op ...

  10. Core Animation笔记(- Layer 基本属性)

    一.Layer的基本属性 1. contents 图层内容默认为nil 可以指定一张图片作为内容展示 self.layerView.layer.contents = (__bridge id)imag ...