bzoj2957 線段樹應用

2021-07-26 15:14:03 字數 548 閱讀 9028

線段樹維護區間上公升子序序列長度,其中在up的時候是通過遞迴在深度log的時間內合併的。也就是說線段樹可能可以幹更多的事。

#include#include#include#include#includeusing namespace std;

const int n=100005;

struct aa

a[n*4];

int n,m;

void build(int i,int l,int r)

int query(int i,double mx)

void up(int i)

void updata(int i,int pos,double high)

int mid=(a[i].l+a[i].r)>>1;

if (pos<=mid) updata(i<<1,pos,high);

else updata(i<<1|1,pos,high);

up(i);

}int main()

return 0;

}

bzoj2957 線段樹 樓房重建

description 小a的樓房外有一大片施工工地,工地上有n棟待建的樓房。每天,這片工地上的房子拆了又建 建了又拆。他經常無聊地看著窗外發呆,數自己能夠看到多少棟房子。為了簡化問題,我們考慮這些事件發生在乙個二維平面上。小a在平面上 0,0 點的位置,第i棟樓房可以用一條連線 i,0 和 i,h...

bzoj2957 奧妙重重的線段樹

線段樹的query和update竟然還可以結合起來用!題意 小a的樓房外有一大片施工工地,工地上有n棟待建的樓房。每天,這片工地上的房子拆了又建 建了又拆。他經常無聊地看著窗外發呆,數自己能夠看到多少棟房子。為了簡化問題,我們考慮這些事件發生在乙個二維平面上。小a在平面上 0,0 點的位置,第i棟樓...

BZOJ2957 樓房重建(線段樹)

這裡放傳送門 可以發現如果一段樓房能被看見,那麼它們跟原點的連線的斜率都是單調遞增的。於是這就變成了乙個維護上公升序列的題。這裡的上公升序列不是最長上公升子串行那樣的東西,而是相當於貪心地選擇,選中的子串行中的每乙個元素它前面都不能存在大於等於它的元素。比如說,有乙個斜率序列是1,2,4,3,4,如...