好无聊,以前写过没什么好讲的,水过。

 #include<iostream>
#include<cstdio>
#include<cstdlib>
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root 1
using namespace std;
const int MAXN=+;
int n,m;
int lsum[MAXN<<],rsum[MAXN<<],msum[MAXN<<];
int cover[MAXN<<];//区间覆盖 void pushdown(int l,int r,int rt)
{
int mid=(l+r)>>;
if (cover[rt]!=-)
{
cover[rt<<]=cover[rt<<|]=cover[rt];
if (cover[rt]==)
lsum[rt<<]=lsum[rt<<|]=rsum[rt<<]=rsum[rt<<|]=msum[rt<<]=msum[rt<<|]=;
else
{
lsum[rt<<]=rsum[rt<<]=msum[rt<<]=mid-l+;
lsum[rt<<|]=rsum[rt<<|]=msum[rt<<|]=r-mid;
}
cover[rt]=-;
}
} void pushup(int l,int r,int rt)
{
int mid=(l+r)>>;
lsum[rt]=lsum[rt<<];
if (lsum[rt<<]==(mid-l+)) lsum[rt]+=lsum[rt<<|];
rsum[rt]=rsum[rt<<|];
if (rsum[rt<<|]==(r-mid)) rsum[rt]+=rsum[rt<<];
msum[rt]=max(rsum[rt<<]+lsum[rt<<|],max(msum[rt<<],msum[rt<<|]));
} void update(int L,int R,int c,int l,int r,int rt)
{
if (L<=l && r<=R)
{
msum[rt]=lsum[rt]=rsum[rt]=c? :(r-l+);
cover[rt]=c;
return;
}
pushdown(l,r,rt);
int mid=(l+r)>>;
if (L<=mid) update(L,R,c,lson);
if (mid<R) update(L,R,c,rson);
pushup(l,r,rt);
} int query(int q,int l,int r,int rt)
{
if (l==r) return l;
pushdown(l,r,rt);
int mid=(l+r)>>;
if (msum[rt<<]>=q) return(query(q,lson));
if (rsum[rt<<]+lsum[rt<<|]>=q) return(mid-rsum[rt<<]+);
return (query(q,rson));
} void build(int l,int r,int rt)
{
lsum[rt]=rsum[rt]=msum[rt]=r-l+;
cover[rt]=-;
if (l==r) return;
int mid=(l+r)>>;
build(lson);
build(rson);
} void solve()
{
build(,n,);
for (int i=;i<m;i++)
{
int op,d,x;
scanf("%d",&op);
if (op==)
{
scanf("%d",&d);
if (msum[root]<d) puts("");
else
{
x=query(d,,n,);
printf("%d\n",x);
update(x,x+d-,,,n,);
}
}
else
{
scanf("%d%d",&x,&d);
update(x,x+d-,,,n,);
}
}
} int main()
{
scanf("%d%d",&n,&m);
solve();
return ;
}

【线段树区间合并】BZOJ1593-[Usaco2008 Feb]Hotel 旅馆的更多相关文章

  1. bzoj1593 [Usaco2008 Feb]Hotel 旅馆(线段树)

    1593: [Usaco2008 Feb]Hotel 旅馆 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 758  Solved: 419[Submit ...

  2. 线段树||BZOJ1593: [Usaco2008 Feb]Hotel 旅馆||Luogu P2894 [USACO08FEB]酒店Hotel

    题面:P2894 [USACO08FEB]酒店Hotel 题解:和基础的线段树操作差别不是很大,就是在传统的线段树基础上多维护一段区间最长的合法前驱(h_),最长合法后驱(t_),一段中最长的合法区间 ...

  3. 【最长连续零 线段树】bzoj1593: [Usaco2008 Feb]Hotel 旅馆

    最长连续零的线段树解法 Description 奶牛们最近的旅游计划,是到苏必利尔湖畔,享受那里的湖光山色,以及明媚的阳光.作为整个旅游的策划者和负 责人,贝茜选择在湖边的一家著名的旅馆住宿.这个巨大 ...

  4. BZOJ1593 [Usaco2008 Feb]Hotel 旅馆

    裸上线段树,就是记的东西有点多... 每个点记区间左端最长0,右端最长0,中间最长0,和tag表示是否全为0/1 直接更新就好,查询的时候先查左儿子,然后查中间,最后查右儿子... /******** ...

  5. 【分块】bzoj1593 [Usaco2008 Feb]Hotel 旅馆

    分块,记录每个块内包括左端点的最大连续白段的长度, 整个块内的最大连续白段的长度, 和包括右端点的最大连续白段的长度. Because 是区间染色,所以要打标记. 至于怎样在O(sqrt(n))的时间 ...

  6. 【bzoj1593】[Usaco2008 Feb]Hotel 旅馆 线段树区间合并

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

  7. POJ 3667 Hotel(线段树 区间合并)

    Hotel 转载自:http://www.cnblogs.com/scau20110726/archive/2013/05/07/3065418.html [题目链接]Hotel [题目类型]线段树 ...

  8. 线段树(区间合并) POJ 3667 Hotel

    题目传送门 /* 题意:输入 1 a:询问是不是有连续长度为a的空房间,有的话住进最左边 输入 2 a b:将[a,a+b-1]的房间清空 线段树(区间合并):lsum[]统计从左端点起最长连续空房间 ...

  9. poj3667 Hotel (线段树 区间合并)

    poj3667 HotelTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 18925 Accepted: 8242Descripti ...

随机推荐

  1. 【tomcat】手动部署动态JavaWeb项目到tomcat

    1.通过修改server.xml进行配置 1.查看项目的目录结构: tomcat运行时加载WebConmtent目录

  2. sql 自定义split

    以下数据库操作针对sql server. 问题来源:由于项目中,有的表字段内容是由多个id或多个其他内容拼接而成.(如:'1,2,3,4,5',或者'name_age_school'),特点是都用某个 ...

  3. BZOJ 3771 生成函数,FFT

    Description 我们讲一个悲伤的故事. 从前有一个贫穷的樵夫在河边砍柴. 这时候河里出现了一个水神,夺过了他的斧头,说: “这把斧头,是不是你的?” 樵夫一看:“是啊是啊!” 水神把斧头扔在一 ...

  4. sqlserver2008 死锁解决方法及性能优化方法

    sqlserver2008 死锁解决方法及性能优化方法 原文: http://blog.csdn.net/kuui_chiu/article/details/48621939 十步优化SQL Serv ...

  5. lnmp的安装--php

    1.下载php源码 wget http://cn2.php.net/distributions/php-5.6.3.tar.gz tar zxvf php-5.6.3.tar.gz cd php-5. ...

  6. Google Guice 之绑定1

    绑定和依赖注入区别 绑定,使用时 需要通过 injector 显示获取 依赖注入,只需要显示获取主类,他的依赖是通过@Injector 和 绑定关系 隐式注入的 http://blog.csdn.ne ...

  7. Flash中的注册点和中心点

    用一句话概括注册点和中心点的作用,那就是:注册点用来定位,中心点用来变形 当然,这句话不是非常准确,只是暂时先这么理解,下面会详细讲解. 认识注册点 每个元件都有一个注册点.在元件编辑窗口.或在舞台中 ...

  8. Go语言的web程序写法

    一切来自于扩展... 核心也即处理输入输出... // helloworld project main.go package main import ( "fmt" "h ...

  9. AIOps实践三板斧:从可视化、自动化到智能化

    http://ai.51cto.com/art/201806/576881.htm?mobile

  10. Linux之父Linus的8个趣闻轶事

    博客中的文章均为 meelo 原创,请务必以链接形式注明本文地址 <只是为了好玩:Linux之父林纳斯自传>是一本很古老的书了,2001年就有了中文版,在2014的时候图灵图书又把它重新翻 ...