p1903-國家集訓隊-數顏色
墨墨購買了一套n支彩色畫筆(其中有些顏色可能相同),擺成一排,你需要回答墨墨的提問。墨墨會向你發布如下指令:
1、 q l r代表詢問你從第l支畫筆到第r支畫筆中共有幾種不同顏色的畫筆。
2、 r p col 把第p支畫筆替換為顏色col。
為了滿足墨墨的要求,你知道你需要幹什麼了嗎?
第1行兩個整數n,m,分別代表初始畫筆的數量以及墨墨會做的事情的個數。
第2行n個整數,分別代表初始畫筆排中第i支畫筆的顏色。
第3行到第2+m行,每行分別代表墨墨會做的一件事情,格式見題幹部分。
對於每乙個query的詢問,你需要在對應的行中給出乙個數字,代表第l支畫筆到第r支畫筆中共有幾種不同顏色的畫筆。
輸入樣例#1:
6 51 2 3 4 5 5
q 1 4
q 2 6
r 1 2
q 1 4
q 2 6
輸出樣例#1:
#include #include #include #include #include #include #include #define ri register int
using namespace std;
const int maxn=10005;
int n,m,block;
int belong[maxn],last[maxn],a[maxn];
struct askask[maxn];
struct change
modify[maxn];
int cnt[1000010],ll=1,rr=0,q=0,cha=0,now=0;
int anss[maxn],ans=0;
inline bool cmp(const ask & a,const ask & b)
while(nowask[i].r)sub(a[rr]),rr--;
while(llask[i].l)add(a[--ll]);
anss[ask[i].id]=ans;
// for(ri j=1;j<=n;j++)cout<}
for(ri i=1;i<=q;i++)
}int main()
for(ri i=1;i<=m;i++)
else
}sort(ask+1,ask+1+q,cmp);
solve();
return 0;
}
Luogu P1903數顏色(帶修改莫隊)
題目鏈結 帶修改莫隊模板。加乙個變數記錄現在是第幾次修改,看看當前列舉的詢問是第幾次修改,改少了就改過去,改多了就改回來。話說我棧用成佇列了能過樣例?include include include include include include include define maxn 50000 u...
bzoj 2120 數顏色 帶修改莫隊
墨墨購買了一套n支彩色畫筆 其中有些顏色可能相同 擺成一排,你需要回答墨墨的提問。墨墨會向你發布如下指令 1 q l r代表詢問你從第l支畫筆到第r支畫筆中共有幾種不同顏色的畫筆。2 r p col 把第p支畫筆替換為顏色col。為了滿足墨墨的要求,你知道你需要幹什麼了嗎?參考 額外維護乙個當前修改...
BZOJ2120 數顏色 帶修改莫隊演算法
數顏色 做法 本題需要用到帶修改莫隊演算法 雖然暴力好像可過 在不帶修改的莫隊演算法裡,我們是將狀態 l r l,r 向狀態 l 1,r l r 1 l 1,r l,r 1 轉移,而帶修改的莫隊演算法就是在狀態中加上一維la stl as t,表示上一次修改操作的編號,然後狀態轉移變成將狀態 l r...