BZOJ2453 維護佇列

2022-05-12 03:18:27 字數 1756 閱讀 7933

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 #include

10 #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 }

view code

bzoj 2453 維護佇列

你小時候玩過彈珠嗎?小朋友a有一些彈珠,a喜歡把它們排成佇列,從左到右編號為1到n。為了整個佇列鮮豔美觀,小朋友想知道某一段連續彈珠中,不同顏色的彈珠有多少。當然,a有時候會依據個人喜好,替換佇列中某個彈珠的顏色。但是a還沒有學過程式設計,且覺得頭腦風暴太浪費腦力了,所以向你來尋求幫助。輸入檔案第一...

BZOJ 2453 維護佇列

description 你小時候玩過彈珠嗎?小朋友a有一些彈珠,a喜歡把它們排成佇列,從左到右編號為1到n。為了整個佇列鮮豔美觀,小朋友想知道某一段連續彈珠中,不同顏色的彈珠有多少。當然,a有時候會依據個人喜好,替換佇列中某個彈珠的顏色。但是a還沒有學過程式設計,且覺得頭腦風暴太浪費腦力了,所以向你...

bzoj2453 維護佇列

你小時候玩過彈珠嗎?小朋友a有一些彈珠,a喜歡把它們排成佇列,從左到右編號為1到n。為了整個佇列鮮豔美觀,小朋友想知道某一段連續彈珠中,不同顏色的彈珠有多少。當然,a有時候會依據個人喜好,替換佇列中某個彈珠的顏色。但是a還沒有學過程式設計,且覺得頭腦風暴太浪費腦力了,所以向你來尋求幫助。輸入檔案第一...