奶牛們最近的旅遊計畫,是到蘇必利爾湖畔,享受那裡的湖光山色,以及明媚的陽光。作為整個旅遊的策劃者和負責人,貝茜選擇在湖邊的一家著名的旅館住宿。這個巨大的旅館一共有n (1 <= n <= 50,000)間客房,它們在同一層樓中順次一字排開,在任何乙個房間裡,只需要拉開窗簾,就能見到波光粼粼的湖面。 貝茜一行,以及其他慕名而來的旅遊者,都是一批批地來到旅館的服務台,希望能訂到d_i (1 <= d_i <= n)間連續的房間。服務台的接待工作也很簡單:如果存在r滿足編號為r..r+d_i-1的房間均空著,他就將這一批顧客安排到這些房間入住;如果沒有滿足條件的r,他會道歉說沒有足夠的空房間,請顧客們另找一家賓館。如果有多個滿足條件的r,服務員會選擇其中最小的乙個。 旅館中的退房服務也是批量進行的。每乙個退房請求由2個數字x_i、d_i 描述,表示編號為x_i..x_i+d_i-1 (1 <= x_i <= n-d_i+1)房間中的客人全部離開。退房前,請求退掉的房間中的一些,甚至是所有,可能本來就無人入住。 而你的工作,就是寫乙個程式,幫服務員為旅客安排房間。你的程式一共需要處理m (1 <= m < 50,000)個按輸入次序到來的住店或退房的請求。第乙個請求到來前,旅店中所有房間都是空閒的。
* 第1行: 2個用空格隔開的整數:n、m
* 第2..m+1行: 第i+1描述了第i個請求,如果它是乙個訂房請求,則用2個數字 1、d_i描述,數字間用空格隔開;如果它是乙個退房請求,用3 個以空格隔開的數字2、x_i、d_i描述
* 第1..??行: 對於每個訂房請求,輸出1個獨佔1行的數字:如果請求能被滿足 ,輸出滿足條件的最小的r;如果請求無法被滿足,輸出0
10 6
1 31 3
1 31 3
2 5 5
1 6147
05線段樹維護區間連續最大值,區間左端點連續值,區間右端點連續值即可·····
我這裡tag標記打了兩個··乙個訂房乙個退房···注意在打其中乙個標記時把另外乙個標記清空·····
#include#include#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int n=5e4+5
;int n,m,trle[n*4],trri[n*4],trmx[n*4],tagclear[n*4],tagfull[n*4
];inline
intr()
inline
void update(int k,int l,int r,int
mid)
inline
void build(int k,int l,int
r)
int mid=(l+r)/2
; build(k*2,l,mid);build(k*2+1,mid+1
,r);
update(k,l,r,mid);
}inline
void pushdown(int k,int l,int r,int
mid)
if(tagclear[k]) }
inline
void full(int k,int l,int r,int x,int
y)
int mid=(l+r)/2
;pushdown(k,l,r,mid);
if(x<=mid) full(k*2
,l,mid,x,y);
if(y>mid) full(k*2+1,mid+1
,r,x,y);
update(k,l,r,mid);
}inline
void clear(int k,int l,int r,int x,int
y)
int mid=(l+r)/2
;pushdown(k,l,r,mid);
if(x<=mid) clear(k*2
,l,mid,x,y);
if(y>mid) clear(k*2+1,mid+1
,r,x,y);
update(k,l,r,mid);
}inline
int find(int k,int l,int r,int
x)
else
if(trmx[k*2]>=x) return find(k*2
,l,mid,x);
else
if(trri[k*2]+trle[k*2+1]>=x)
else
if(trmx[k*2+1]>=x) return find(k*2+1,mid+1
,r,x);
else
if(trri[k]>=x) }
intmain()
if(op==2
)
} return0;
}
bzoj1593 預定旅館 線段樹維護連續區間
題解 這題非常經典啊似乎。經典模型要記住啊。對於每個節點維護該區間裡的最大的連續區間,然後我們就可以logn遞迴找最前面的一段。那就維護mx 無限制 lmx 必須從左邊開始 rmx 必須從右邊開始 1 include2 include3 include4 include5 include6 incl...
bzoj1593 預定旅館 線段樹維護連續區間
題解 這題非常經典啊似乎。經典模型要記住啊。對於每個節點維護該區間裡的最大的連續區間,然後我們就可以logn遞迴找最前面的一段。那就維護mx 無限制 lmx 必須從左邊開始 rmx 必須從右邊開始 1 include2 include3 include4 include5 include6 incl...
刷題總結 作詩(bzoj2821)
神犇sjy虐完heoi之後給傻 lyd出了一題 shy是t國的公主,平時的一大愛好是作詩。由於時間緊迫,shy作完詩 些漢字構成詩。因為shy喜歡對偶,所以shy規定最後選出的每個漢字都必須在 l,r 裡出現了正偶數次。而且shy認 為選出的漢字的種類數 兩個一樣的漢字稱為同一種 越多越好 為了拿到...