線段數塗色
#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,就代表不需要繼續查詢縮小的區間了。主要是在更新結點的...