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

 #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. 中南oj String and Arrays

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?cid=2072&pid=1 Problem B: String and Arrays T ...

  2. Java 将html导出word格式

    @RequestMapping("download") public void exportWord( HttpServletRequest request, HttpServle ...

  3. 盲注脚本2.基于bool

    盲注脚本2.基于bool #!/usr/bin/env python #encoding:utf-8 #by i3ekr #using # python sqlinject.py -D "数 ...

  4. 跟踪内核启动过程CONFIG_DEBUG_LL【转自】

    转自:http://bbs.chinaunix.net/thread-3642079-1-1.html 最近在调试Linux内核,跟踪启动过程.发现在没有turn on mmu之前,可以使用物理地址, ...

  5. EF添加ADO.NET实体模型处直接选择Oracle数据源

    上一文介绍了如何下载Mysql for vs Tools来进行Mysql的ADO.NET实体模型数据源选择,今天将Oracle的测试了下.步骤如下: 1.在你项目Model层中nuget安装选中项 2 ...

  6. hadoop 安装 错误及解决方法

    1.ssh 相关问题: rm ~/.ssh/known_hosts //与ssh中的不服 //再重新生成密钥 2.ERROR namenode.NameNode: java.io.IOExceptio ...

  7. BZOJ 3771 生成函数,FFT

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

  8. 转载: GIt远程操作详解

    Git远程操作详解   作者: 阮一峰 日期: 2014年6月12日 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介 ...

  9. Office Excel保留两位小数的方法,网上到处乱摘的

    今天看到一位朋友的问题就在网上查了下,顺便记下来自己用  =ROUND(A1,2)-(MOD(A1*10^3,20)=5)*10^(-2)

  10. ReentrantLock 分析

    带着疑问去分析 ReentrantLock是如何实现锁管理的. ReentrantLock是如何实现重入的. ReentrantLock是如何实现公平锁与非公平锁. ReentantLock的公平锁为 ...