[BZOJ1593] [Usaco2008 Feb]Hotel 旅馆

原创 2015年11月21日 17:37:29

传送门

http://www.lydsy.com/JudgeOnline/problem.php?id=1593

题目大意

两种操作
1.询问连续长度为x的最左端点,并将这段覆盖
2.将区间[L,R]区间取消覆盖

题解

记录区间
1.左端点连续没覆盖的长度
2.右端点连续没覆盖的长度
3.区间最长连续没覆盖的长度
修改之后回溯的时候合并注意讨论即可
详细见code

const
 maxn=50005;
var
 w:array[0..8*maxn,1..7]of longint;
 i,j,k:longint;
 n,m,a,b,c,ans:longint;
procedure build(a,l,r:longint);
var mid:longint;
begin
 w[a,1]:=l; w[a,2]:=r; w[a,3]:=r-l+1; w[a,4]:=r-l+1; w[a,5]:=r-l+1; w[a,6]:=-1;
 if l=r then exit;
 mid:=(l+r)>>1;
 build(a<<1,l,mid); build(a<<1+1,mid+1,r);
end;

procedure pushdown(a:longint);
begin
 if (w[a,6]=0)and(w[a,1]<>w[a,2]) then begin
  w[a<<1,3]:=w[a<<1,2]-w[a<<1,1]+1; w[a<<1,4]:=w[a<<1,3]; w[a<<1,5]:=w[a<<1,3];
  w[a<<1+1,3]:=w[a<<1+1,2]-w[a<<1+1,1]+1; w[a<<1+1,4]:=w[a<<1+1,3]; w[a<<1+1,5]:=w[a<<1+1,3];
  w[a<<1,6]:=w[a,6]; w[a<<1+1,6]:=w[a,6];
 end;
 if (w[a,6]=1)and(w[a,1]<>w[a,2]) then begin
  w[a<<1,3]:=0; w[a<<1,4]:=0; w[a<<1,5]:=0;
  w[a<<1+1,3]:=0; w[a<<1+1,4]:=0; w[a<<1+1,5]:=0;
  w[a<<1,6]:=w[a,6]; w[a<<1+1,6]:=w[a,6];
 end;
 w[a,6]:=-1;
end;

function query(a,b:longint):longint;
var mid:longint;
begin
 if w[a,6]<>-1 then pushdown(a);
 if w[a,1]=w[a,2] then exit(1);
 mid:=(w[a,1]+w[a,2])>>1;
 if w[a<<1,5]>=b then exit(query(a<<1,b)) else
 if w[a<<1,4]+w[a<<1+1,3]>=b then exit(mid-w[a<<1,4]+1)
 else exit(query(a<<1+1,b));
end;

procedure update(a,l,r,c:longint);
var mid,d:longint;
begin
 if w[a,6]<>-1 then pushdown(a);
 if (w[a,1]=l)and(w[a,2]=r) then begin
  w[a,6]:=c;
  if c=1 then d:=0 else d:=w[a,2]-w[a,1]+1;
  w[a,3]:=d; w[a,4]:=d; w[a,5]:=d;
  exit;
 end;
 mid:=(w[a,1]+w[a,2])>>1;
 if r<=mid then update(a<<1,l,r,c) else
 if l>mid then update(a<<1+1,l,r,c)
 else begin
  update(a<<1,l,mid,c);
  update(a<<1+1,mid+1,r,c);
 end;
 w[a,3]:=w[a<<1,3]; w[a,4]:=w[a<<1+1,4];
 if w[a<<1,4]=w[a<<1,2]-w[a<<1,1]+1 then inc(w[a,3],w[a<<1+1,3]);
 if w[a<<1+1,3]=w[a<<1+1,2]-w[a<<1+1,1]+1 then inc(w[a,4],w[a<<1,4]);
 w[a,5]:=w[a<<1,5]; if w[a<<1+1,5]>w[a,5] then w[a,5]:=w[a<<1+1,5];
 if w[a<<1,4]+w[a<<1+1,3]>w[a,5] then w[a,5]:=w[a<<1,4]+w[a<<1+1,3];
end;

begin
 readln(n,m);
 build(1,1,n);
 for i:=1 to m do
  begin
   read(a);
   if a=1
   then begin
    readln(b);
    if w[1,5]<b then begin writeln(0); continue; end;
    ans:=query(1,b); writeln(ans);
    update(1,ans,ans+b-1,1);
   end
   else begin
    readln(b,c);
    update(1,b,b+c-1,0);
   end;
  end;
end.
版权声明:本文为博主原创文章,未经博主允许不得转载。

【POJ3666】【USACO 2008 Feb Gold】 2.Cow Game 动规

除草,水题,勿看。
  • Vmurder
  • Vmurder
  • 2014年12月30日 21:52
  • 973

3667 Hotel

HotelTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 2523 Accepted: 957DescriptionThe cows...
  • hqd_acm
  • hqd_acm
  • 2010年07月22日 11:37
  • 799

bzoj1593[Usaco2008 Feb]Hotel旅馆

线段树
  • u010336344
  • u010336344
  • 2016年11月04日 14:44
  • 687

英语歌曲:HOTEL CALIFORNIA 加州旅馆

On a dark desert highway, cool wind in my hair 在漆黑荒凉的高速公路上,凉风吹散了我的头发 Warm smell of colitas, risi...
  • silentwolfyh
  • silentwolfyh
  • 2016年03月19日 17:38
  • 418

poj 3667 hotel 旅馆(线段树)

poj 3667 hotel 旅馆【问题描述】 OIER们最近的旅游计划,是到长春净月潭,享受那里的湖光山色,以及明媚的阳光。你作为整个旅游的策划者和负责人,选择在潭边的一家著名的旅馆住宿。这个巨大...
  • w4149
  • w4149
  • 2017年06月10日 18:40
  • 122

NOIP2011复赛(day1):选择客栈

题目: http://files.cnblogs.com/lijianlin1995/NOIP2011%E6%8F%90%E9%AB%98%E7%BB%84Day1.pdf 旅馆: 这是在noip2...
  • captain_Ben
  • captain_Ben
  • 2015年10月22日 13:23
  • 487

【bzoj1592】【Usaco2008 Feb】【动态规划】CQYZ_Vijos_P1468 路面修整

【问题描述】  FJ打算好好修一下农场中某条凹凸不平的土路。按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也就是说,高度上升与高度下降的路段不能同时出现在修好的路中。   整条路被分成了 ...
  • ERHUO119
  • ERHUO119
  • 2017年11月06日 16:01
  • 56

bzoj 1610: [Usaco2008 Feb]Line连线游戏(计算几何)

1610: [Usaco2008 Feb]Line连线游戏 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1782  Solved: 799 [S...
  • clover_hxy
  • clover_hxy
  • 2016年05月07日 10:31
  • 393

线段树专题—POJ 3667 Hotel(区间合并模板)

题意:给一个n和m,表示n个房间,m次操作,操作类型有2种,一种把求连续未租出的房间数有d个的最小的最左边的房间号,另一个操作时把从x到x+d-1的房间号收回。 分析:这是一个区间合并的典型...
  • sin_XF
  • sin_XF
  • 2015年08月15日 14:47
  • 707

BaiduMap---百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用

转载自:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向,如果你还...
  • IT1039871366
  • IT1039871366
  • 2015年02月28日 15:27
  • 1038
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[BZOJ1593] [Usaco2008 Feb]Hotel 旅馆
举报原因:
原因补充:

(最多只允许输入30个字)