bzoj 2453 維護佇列 帶修莫隊

2022-04-30 08:39:10 字數 2037 閱讀 2001

time limit: 10 sec  memory limit: 128 mb

submit: 952  solved: 432

[submit][status][discuss]你小時候玩過彈珠嗎?

小朋友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福建集訓

把詢問和修改分開排序,修改按時間排,詢問以左端點所在塊為第一關鍵字,右端點所在塊為第二關鍵字,時間為第三關鍵字排序。

維護左右時間三個指標,不斷修改還原。

塊大小為$n^}$。

左指標每個詢問走$n^}$。

右指標同理,不過要多上每次總從左走到右的複雜度,總共$n\times n^}+n\times n^}$。

時間指標每次左右端點所在塊變化重新開始走,一共$n^}$個不同的左右塊匹配數,複雜度$n\times n^}$.

好像塊開100比較快。

(寫莫隊時一定要先把lr往兩邊移,再向中間移)

1 #include2 #include3 #include4 #include5

#define d 100

6#define n 10005

7using

namespace

std;

8int

n,m;

9int

c[n];

10struct

node

1114

}q[n],g[n];

15int

cnt1,cnt2;

16bool cmp1(const node &aa,const node &bb)

1720

intbe1[n],be2[n];

21bool cmp2(const node &aa,const node &bb)

2228

return aa.l30int

ans[n];

31int now[n*100

],cnt;

32void

solve()

3354}55

while(g[p2].t>q[i].t)

5666 p2--;67}

68while(p6973

while(p>q[i].r)

7478

while(p17983

while(p1>q[i].l)

8488 ans[q[i].t]=cnt;89}

90}91int

main()

9299 memset(ans,-1,sizeof

(ans));

100char s[2

];101

for(int i=1;i<=m;i++)

102110

else

111116

}117 sort(q+1,q+cnt2+1

,cmp2);

118 sort(g+1,g+cnt1+1

,cmp1);

119solve();

120for(int i=1;i<=m;i++)

121124

return0;

125 }

bzoj 2453 維護佇列

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

BZOJ 2453 維護佇列

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

bzoj2453 維護佇列

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