POJ 3667 線段樹 標記

2021-07-23 03:53:03 字數 1396 閱讀 9535

自從某次考試寫線段樹寫掛了以後 這是第一次寫線段樹,,,,,,

這是乙個傷心的故事……

題意:

思路:

標記 維護從左到右的最大值 從右到左的最大值 區間內的最大值……

然後就一搞 就出來了

//by siriusren

#include

using namespace std;

int n,m,jy,xx,yy,d,d;

struct treetree[222222];

inline int max(int

x,int

y)inline int

read()

void build(int l,int r,int

pos)

int mid=(l+r)>>1,lson=pos

<<1,rson=pos

<<1|1;

build(l,mid,lson),build(mid+1,r,rson);

tree[pos].lsum=tree[pos].rsum=tree[pos].sum=tree[lson].sum+tree[rson].sum;

}void push_down(int num,int

pos)

else

tree[pos].cover=0;

}void push_up(int num,int

pos)

int query(int l,int r,int

pos)

return0;}

void insert(int l,int r,int

pos,int id)

int mid=(l+r)>>1,lson=pos

<<1,rson=pos

<<1|1,len=r-l+1;

if(tree[pos].cover)push_down(len,pos);

if(mid1,r,rson,id);

else

if(mid>=yy)insert(l,mid,lson,id);

else insert(l,mid,lson,id),insert(mid+1,r,rson,id);

push_up(len,pos);

}int main()

else}}

線段樹重開poj 3667

本題目重做感受頗多,思考的深度決定了對線段樹的掌握程度,只有自己創生的才是自己的啊。本題用到了三個維護值,sum表示區間最長連續區間,lsum為區間左面最長連續區間長。rsum同理。現在來說明sum為什麼具有 可維護性,線段樹的可維護性是相對於更新區間而言的,因為更新的logn個區間總是被刷成全空房...

poj3667 線段樹(區間合併)

題意 有編號為1 n的n個房間,有兩種詢問 1.有人來訂連續的k間房,有的話返回第一間房的編號,否則返回0。2.有人退連續的從a開始的連續的k間房。1.該區間最大的連續空房數 2.該區間從最左邊起的最大的連續空房數 3.該區間從最右邊起的最大的連續空房數 根據以上三個資訊,每個非葉結點的資訊都可以由...

poj 3667 線段樹 區間合併

感想 沒有什麼說的了。越做線段樹越感覺自己水。這個我感覺自己就真坑了大家了。難的不會,簡單的也水不過了。哎,最近這是什麼情況啊!題目 題意 旅館有編號為1 n的房間,現在可能有m波人過了租房,每波人可能要定連續的d間房,如果有的話,編號盡量小,沒有的話就說0,也可能有d個人要退房,他們的房是連續的x...