#include #include #define maxn 200000
struct nodee[maxn*4];
int h,w,n;
void build(int a,int b,int c)
int query(int val,int c)
void update(int a,int b,int c,int val)
int mid=(e[c].l+e[c].r)/2;
if(b<=mid)
update(a,b,2*c,val);
else if(a>mid)
update(a,b,2*c+1,val);
if(e[2*c].w>e[2*c+1].w)
else
}int main()
}return 0;}/*
以高度和廣告數的較小值建線段樹,樹中w表示該段中最大空餘量,id表示最大空餘量所在行,從上還是記。每次貼廣告
比較空餘量,從上到下,有空餘就貼。再根據查詢到的空餘行進行點更新。
*/
線段樹專題 HDU2795 Billboard
題意 給一塊h w廣告板,然後給n個1 wi的廣告條,廣告條放的順序是有限選擇向上的,再優先選擇左邊的,對於每塊廣告條,輸出它放的位置,如果放不下,輸出 1 分析 很簡單的單點更新max值的線段樹,思路很好想,以廣告板的每個高度建樹,更新點的時候優先選擇高度值小的點。注意 比較容易出錯的是 要注意h...
hdu 2795 單點更新
題意 有乙個公告欄,h m的,給定n個操作,對於每乙個操作給定乙個數wi,表示有乙個通知的大小是1 wi的,每次對於這種操作將這個通知放在盡可能上面盡可能左邊的位置中去。思路 有h行,將每一行初始為m,表示還有m個空位可以放,那麼運用一棵線段樹來記錄下,行之間的區間最大值,就是可以放下的最大值。對於...
hdu 2795 單點改動
題意 有h w大的公告板。有n條公告要寫入,每條公告高度都是1,寬度是wi,每次從最上最左的空位寫,假設有空位輸出第幾行。假設沒有足夠空位輸出 1。題解 注意h最大1e9。但事實上是看n的大小。由於假設有n條公告最多佔n行,所以線段樹最大是min h,n include include includ...