乙個簡單的 或 線段樹.竟然坑了我乙個小時...
因為顏色很小,所以把狀態壓起來.
然後每個節點上的數值代表當前顏色狀態.
然後節點合併很簡單,直接或起來.
需要注意一下的地方是修改時的 \(lazy\) ,要完全覆蓋,這裡不能或.
#include#define ll long long
#define in(x) x=read()
#define mid (l+r)/2
#define n 100001
using namespace std;
ll sgm[n*4],lazy[n*4],n,m,t;
int read()
while(ch>='0'&&ch<='9')
return f*w;
}void build(int node,int l,int r)
void push_down(int node)
void change(int node,int l,int r,int l,int r,int v)
int main()
else
}}
P1558 色板遊戲
題目位址 思路 位運算,狀態壓縮,線段樹 分析思路 線段樹code include include define clean x memset x,0,sizeof x define ls rt 2 define rs rt 2 1 const int maxl 100005 maxk 30 uns...
P1558 色板遊戲 狀壓線段樹
題面 洛谷p1558 每次不同顏色覆蓋一段區間,每次詢問一段區間有多少種顏色 因為顏色數 t 很小,使用二進位制表示狀態當前區間有那些顏色,二進位制第 i 位表示此區間是否含有 i 這種顏色,線段樹合併資訊時左右兒子資訊或一下就好了。scanf讀入char炸了我好久,最後換成cin就ac了 ac c...
洛谷 P1558 色板遊戲
阿寶上學了,今天老師拿來了一塊很長的塗色板。色板長度為l,l是乙個正整數,所以我們可以均勻地將它劃分成l塊1厘公尺長的小方格。並從左到右標記為1,2,l。現在色板上只有乙個顏色,老師告訴阿寶在色板上只能做兩件事 1.c a b c 指在a到 b 號方格中塗上顏色 c。2.p a b 指老師的提問 a...