樓房重建(分塊優化)

2022-02-27 07:00:06 字數 596 閱讀 5970

小a的樓房外有一大片施工工地,工地上有n棟待建的樓房。每天,這片工地上的房子拆了又建、建了又拆。他經常無聊地看著窗外發呆,數自己能夠看到多少棟房子。

為了簡化問題,我們考慮這些事件發生在乙個二維平面上。小a在平面上(0,0)點的位置,第i棟樓房可以用一條連線(i,0)和(i,hi)的線段表示,其中hi為第i棟樓房的高度。如果這棟樓房上任何乙個高度大於0的點與(0,0)的連線沒有與之前的線段相交,那麼這棟樓房就被認為是可見的。

施工隊的建造總共進行了m天。初始時,所有樓房都還沒有開始建造,它們的高度均為0。在第i天,建築隊將會將橫座標為xi的房屋的高度變為yi(高度可以比原來大—修建,也可以比原來小—拆除,甚至可以保持不變—建築隊這天什麼事也沒做)。請你幫小a數數每天在建築隊完工之後,他能看到多少棟樓房?

輸入格式:

第一行兩個正整數n,m

接下來m行,每行兩個正整數xi,yi

輸出格式:

m行,第i行乙個整數表示第i天過後小a能看到的樓房有多少棟

給個鏈結

一模一樣,只需要改成單點修改,同時使用單調佇列優化

但是記住,每次查詢的值,取決於前乙個塊兒的最大值

(分塊)樓房重建 HYSBZ 2957

長度為n的座標軸上,從1 n上的每一點都有一棟樓房,樓房的初識高度都為0,每一天都有一棟樓房的高度被修改 也可以不變 一棟樓房能被看見當且僅當其最高點與遠點的連線不會與其他之前連線相交,問你每天能看見的樓房數是多少。其實這道題也可以用線段樹做,但是感覺更複雜。預處理 首先我們還是將整個打的區間分塊成...

(分塊)樓房重建 HYSBZ 2957

題意 長度為n的座標軸上,從1 n上的每一點都有一棟樓房,樓房的初識高度都為0,每一天都有一棟樓房的高度被修改 也可以不變 一棟樓房能被看見當且僅當其最高點與遠點的連線不會與其他之前連線相交,問你每天能看見的樓房數是多少。思路 其實這道題也可以用線段樹做,但是感覺更複雜。預處理 首先我們還是將整個打...

BZOJ2957 樓房重建 分塊

貌似是一道線段樹的題,然而線段樹太燒腦想不出來,只能暴力的玩分塊。分塊很好想的,維護 n 個塊,每塊都按照斜率單調遞增的標準來維護。查詢把所有塊for一遍。因為每個塊的斜率都是單調遞增的,對於每個塊使用二分可以節省一點點時間,就可以偷稅 愉悅 的accepted了 玩個斜率就不該用float 就為了...