線段樹維護區間上公升子序序列長度,其中在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,如...