luogu 1558 色板遊戲

2022-02-24 16:26:48 字數 2308 閱讀 4293

寫這篇部落格不是為了總結我的演算法,而是為了紀念讓我爆零的套路.....

色板長度為\(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.最後的查詢完畢的值...