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

 #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. application.properties 文件的优先级

    bootstrapProperties #来自configServer的值 commandLineArgs #命令行参数 servletConfigInitParams servletContextI ...

  2. js中的apply、call、bind

    每个函数都包含两个非继承而来的方法,call()和apply(),可以改变函数内部this的指向 1.apply 用另一个对象替换当前对象,接收两个参数,第一个参数表示需要绑定的this变量,第二个参 ...

  3. [NOI2008] [bzoj1061] 志愿者招募

    还是一道费用流的题目.话不多说,进入正题. 题意:给定n个点和m种从l到r覆盖一层的费用,求满足所有点的覆盖层数都大等于权值的最小费用 分析:要做到区间修改,看似比较麻烦. 用差分把区间修改变成单点修 ...

  4. Msfvenom学习总结-MSF反弹webshell

    1.    –p (- -payload-options) 添加载荷payload. 载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门,所以只有选对payload,再填 ...

  5. Django rest framework 的认证流程(源码分析)

    一.基本流程举例: urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^users/', views.HostView.as_view() ...

  6. php文件读取的问题

    PHP字符编码问题 首先说下字符编码问题,当我们给定路径后如果路径中包含中文,可能会出现问题,打印到屏幕则显示没问题, 但是读取文件会报错:readfile(E:/素玄文件/app历史版本/素玄ERP ...

  7. 【模板】BZOJ 3685: 普通van Emde Boas树——Treap

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3685 据说神犇都是用zkw线段树水过的啊... 我蒟蒻只会写treap,加了fread之后8 ...

  8. BZOJ 2460: [BeiJing2011]元素 贪心,线性基

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 解法:从大到小排序,依次贪心的添加到当前集合就可以了,需要动态维护线性基.用拟阵证明 ...

  9. Python爬虫数据处理

    一.首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数1.1.设置变量 set @变量名=值 set @address='中国 ...

  10. android dialog 筛选列表

    1.效果图 2. 布局文件 1)显示筛选的标题 <?xml version="1.0" encoding="utf-8"?> <LinearL ...