time limit: 10 sec memory limit: 128 mb
submit: 183 solved: 89
[submit][status]
你小時候玩過彈珠嗎?
小朋友a有一些彈珠,a喜歡把它們排成佇列,從左到右編號為1到n。為了整個佇列鮮豔美觀,小朋友想知道某一段連續彈珠中,不同顏色的彈珠有多少。當然,a有時候會依據個人喜好,替換佇列中某個彈珠的顏色。但是a還沒有學過程式設計,且覺得頭腦風暴太浪費腦力了,所以向你來尋求幫助。
輸入檔案第一行包含兩個整數n和m。
第二行n個整數,表示初始佇列中彈珠的顏色。
接下來m行,每行的形式為「q l r」或「r x c」,「q l r」表示a想知道從佇列第l個彈珠到第r個彈珠中,一共有多少不同顏色的彈珠,「r x c」表示a把x位置上的彈珠換成了c顏色。
對於每個q操作,輸出一行表示詢問結果。
2 31 2
q 1 2
r 1 2
q 1 221
對於100%的資料,有1 ≤ n ≤ 10000, 1 ≤ m ≤ 10000,小朋友a不會修改超過1000次,所有顏色均用1到10^6的整數表示。
2011福建集訓
題解:用pre[i]記錄前乙個和i相同顏色的球的所在位置
詢問l到r時,如果pre[i]利用這種思路我們可以。。。分塊
每一塊內按pre[i]排序,然後和教主的魔法那題都一樣了
-----hzwer
**:
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #includeview code10 #include11 #include
12#define inf 1000000000
13#define maxn 10000+1000
14#define maxm 1000000+1000
15#define eps 1e-10
16#define ll long long
17#define pa pair18
using
namespace
std;
19 inline int
read()
2023
while(ch>='
0'&&ch<='9')
24return x*f;25}
26int
n,m,block,b[maxn],c[maxn],pre[maxn],pos[maxn],last[maxm];
27void reset(int
x)28
33int find(int x,int
y)34
41return l-(x-1)*block-1;42
}43int query(int x,int
y)44
50else
5155
for(int i=bx+1;ifind(i,x);
56return
sum;57}
58void change(int x,int
y)5969}
70int
main()
7183
for(int i=1;i<=pos[n];i++)reset(i);
84char ch;int
x,y;
85while(m--)86
91return0;
92 }
bzoj 2453 維護佇列
你小時候玩過彈珠嗎?小朋友a有一些彈珠,a喜歡把它們排成佇列,從左到右編號為1到n。為了整個佇列鮮豔美觀,小朋友想知道某一段連續彈珠中,不同顏色的彈珠有多少。當然,a有時候會依據個人喜好,替換佇列中某個彈珠的顏色。但是a還沒有學過程式設計,且覺得頭腦風暴太浪費腦力了,所以向你來尋求幫助。輸入檔案第一...
BZOJ 2453 維護佇列
description 你小時候玩過彈珠嗎?小朋友a有一些彈珠,a喜歡把它們排成佇列,從左到右編號為1到n。為了整個佇列鮮豔美觀,小朋友想知道某一段連續彈珠中,不同顏色的彈珠有多少。當然,a有時候會依據個人喜好,替換佇列中某個彈珠的顏色。但是a還沒有學過程式設計,且覺得頭腦風暴太浪費腦力了,所以向你...
bzoj2453 維護佇列
你小時候玩過彈珠嗎?小朋友a有一些彈珠,a喜歡把它們排成佇列,從左到右編號為1到n。為了整個佇列鮮豔美觀,小朋友想知道某一段連續彈珠中,不同顏色的彈珠有多少。當然,a有時候會依據個人喜好,替換佇列中某個彈珠的顏色。但是a還沒有學過程式設計,且覺得頭腦風暴太浪費腦力了,所以向你來尋求幫助。輸入檔案第一...