線段樹模板 poj2777

2021-06-01 01:50:54 字數 787 閱讀 4829

線段數塗色

#include #include using namespace std;

#define maxn 100005

struct node

tree[maxn*4];

bool visit[40];

int sum;

void build(int left,int right,int id)

tree[id].color =1;

int mid=(left+right)>>1;

build(left,mid,id*2);

build(mid+1,right,id*2+1);

}void insert(int st,int ed,int color,int id)

if(tree[id].color)

//tree[id].color =0;

int mid=(tree[id].left +tree[id].right )>>1;

if(mid>=ed)

insert(st,ed,color,id*2);

else if(mid>1;

if(mid>=ed)

query(st,ed,id*2);

else if(mid>1;

query(st,mid,id*2);

query(mid+1,ed,id*2+1); }}

int main()

else if(ch[0]=='p')

}return 0;

}

POJ2777 線段樹染色

初始顏色均為1,倆操作 修改 將 l,r 染為顏色z 查詢 l,r 的不同顏色數 1e5個點,1e5個操作,30種顏色 查詢 如果查詢維護區間顏色數,不滿足區間加法 顏色數較少,維護區間顏色狀態s val pushup 當前子樹s 左子樹s 右子樹s 修改 維護顏色替換標記lazy 注意pushdo...

POJ 2777 線段樹 位運算

poj 2777 有乙個長位l的區間,有t種顏色,進行o次操作,每次操作 1 n 100000,1 t 30 1 o 100000 每次操作有兩種形式 p a b c 將區間 a,b 染成顏色c q a b 詢問區間 a,b 有多少種不同的顏色 每個點的初始顏色都是1 注意 a可能大於b 線段樹的區...

poj2777線段樹 lazy思想

題意 有乙個長板子,多次操作,有兩種操作,第一種是給從a到b那段染一種顏色c,另一種是詢問a到b有多少種不同的顏色。這題更加讓我理解線段樹的結構了,特別是lazy思想的運用。事實上lazy思想就是個懶人的標記,若對於這個結點lazy標記為true,就代表不需要繼續查詢縮小的區間了。主要是在更新結點的...