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

 #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. bzoj 2669 状压DP

    因为最多有8个'X',所以我们可以用w[i][s]来表示现在我们填了前i个数,填的X的为S,因为每次新加进来的数都不影响前面的最小值,所以我们可以随便添加,这样就有了剩下所有位置的方案,每次都这样转移 ...

  2. Python2.7.3 Tkinter Entry(文本框) 说明

      Python学习记录--关于Tkinter Entry(文本框)的选项.方法说明,以及一些示例. 属性(Options) background(bg) borderwidth(bd) cursor ...

  3. python基础===【字符串】所有相关操作

    #字符串的相关操作 #基本操作 #+ 字符串连接操作 str1 = '来是come走是go' str2 = '点头yes摇头no' result = str1 + str2 print(result) ...

  4. (十六)strtok、strtok_s、strtok_r 字符串分割函数

    1.strtok函数 函数原型:char * strtok (char *str, const char * delimiters); 参数:str,待分割的字符串(c-string):delimit ...

  5. 64_g1

    GAPDoc-1.5.1-12.fc26.noarch.rpm 13-Feb-2017 22:37 1082286 GAPDoc-latex-1.5.1-12.fc26.noarch.rpm 13-F ...

  6. Windows 10又现新Bug,24核心竟卡成蜗牛

    Windows 10又现新Bug,24核心竟卡成蜗牛 https://news.cnblogs.com/n/573996/

  7. 升级OS10.11系统后 Xcode6.4的变化少了个按钮 could not launch “Xcode” Xcode 插件安装

    升级OS10.11系统后 Xcode6.4的变化少了个按钮 could not launch “Xcode”  Xcode 插件安装 A:  升级10.11后Xcode 左上角模拟器选择菜单不在了   ...

  8. [ python ] 下划线的意义和一些特殊方法

    Python用下划线 Python用下划线为变量前缀和后缀制定特殊变量 _xxx 不能用 'from module import *' 导入__xxx__ 系统定义名字__xxx 类中的私有变量名 核 ...

  9. django使用JWT保存用户登录信息

    在使用前必须弄明白JWT的原理,原理可以看我的另一篇博文:https://www.cnblogs.com/chichung/p/9966027.html JWT的流程 1.签发JWT 在用户正确输入账 ...

  10. 关于ueditor在Java中文件上传问题,404问题

    问题困扰了两天,部署要求导入到webcontent下,我导入到了整个项目目录下,自己粗心犯错,导致页面访问不到404. 解决了上面的问题,试着进行文件上传,却一直找不到图片: 调出浏览器控制台: 刚开 ...