寫這篇部落格不是為了總結我的演算法,而是為了紀念讓我爆零的套路.....色板長度為\(l\),\(l\)是乙個正整數,所以我們可以均勻地將它劃分成\(l\)塊\(1\)厘公尺長的小方格。並從左到右標記為\(1, 2, ... l\)。
現在色板上只有乙個顏色,老師告訴阿寶在色板上只能做兩件事:
\("c a b c"\) 指在\(a\)到 \(b\) 號方格中塗上顏色 \(c\)。
\("p a b"\) 指老師的提問:\(a\)到 \(b\)號方格中有幾種顏色。
學校的顏料盒中一共有 \(t\) 種顏料。為簡便起見,我們把他們標記為 \(1, 2, ... t\). 開始時色板上原有的顏色就為\(1\)號色。 面對如此複雜的問題,阿寶向你求助,你能幫助他嗎?
這道題一看資料範圍,emmm,可以狀壓。
然後,一眼切
/*
全wa**
*/#include #include #include #include #include using namespace std;
const int n = 100001;
struct edge tree[n<<2];
void up(int k)
void build(int k,int ll,int rr)
int m=(ll+rr)>>1;
build(k<<1,ll,m);
build(k<<1|1,m+1,rr);
up(k);
}void down(int k)
}void c_interval(int k,int ll,int rr,int val)
down(k);
int m=(tree[k].l+tree[k].r)>>1;
if(ll<=m) c_interval(k<<1,ll,rr,val);
if(rr>m) c_interval(k<<1|1,ll,rr,val);
up(k);
}int ask_interval(int k,int ll,int rr)
down(k);
int m=(tree[k].l+tree[k].r)>>1;
if(ll<=m) ans|=ask_interval(k<<1,ll,rr);
if(rr>m) ans|=ask_interval(k<<1|1,ll,rr);
up(k);
return ans;
}int n,m,q;
int calc(int x)
return ans;
}int main()
if(s=='p')
}}
知道為啥嗎??
因為它a和b的大小壓根不能確定!
#include #include #include #include #include using namespace std;
const int n = 100001;
struct edge tree[n<<2];
void up(int k)
void build(int k,int ll,int rr)
int m=(ll+rr)>>1;
build(k<<1,ll,m);
build(k<<1|1,m+1,rr);
up(k);
}void down(int k)
}void c_interval(int k,int ll,int rr,int val)
down(k);
int m=(tree[k].l+tree[k].r)>>1;
if(ll<=m) c_interval(k<<1,ll,rr,val);
if(rr>m) c_interval(k<<1|1,ll,rr,val);
up(k);
}int ask_interval(int k,int ll,int rr)
down(k);
int m=(tree[k].l+tree[k].r)>>1;
if(ll<=m) ans|=ask_interval(k<<1,ll,rr);
if(rr>m) ans|=ask_interval(k<<1|1,ll,rr);
up(k);
return ans;
}int n,m,q;
int calc(int x)
return ans;
}int main()
if(s=='p')
}return 0;
}
luoguP1558 色板遊戲
題目背景 阿寶上學了,今天老師拿來了一塊很長的塗色板。題目描述 色板長度為l,l是乙個正整數,所以我們可以均勻地將它劃分成l塊1厘公尺長的小方格。並從左到右標記為1,2,l。現在色板上只有乙個顏色,老師告訴阿寶在色板上只能做兩件事 1.c a b c 指在a到 b 號方格中塗上顏色 c。2.p a ...
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...
Luogu P1558 色板遊戲
此題與poj2777重題 為了加深對線段樹的記憶,然後開始搞這道題。tm的wa了一下午就是發現x可能大於y 然而題目裡說的還很清楚,我tm沒看見 1.儲存時不是儲存顏色,而是將它狀壓成乙個整數 如序號為3的顏色存為1 3 8 2.回溯時不是取和相加,而是直接按位或 原理等下講 3.最後的查詢完畢的值...