給定乙個n
nn個數的序列a
aa,有q
qq次詢問,每次詢問區間[l,
r]
[l,r]
[l,r
]的所有子區間的mex
mexme
x的和。
資料範圍:n,q
≤106
,ai≤
10
9n,q\le 10^,a_i\le 10^
n,q≤10
6,ai
≤10
9 發現[ l,
r]
[l,r]
[l,r
]的子區間這個限制條件過多,考慮把它拆成起點在[1,
r]
[1,r]
[1,r
]內,終點在[l,
r]
[l,r]
[l,r
]內的答案減去起點在[1,
l−1]
[1,l-1]
[1,l−1
]內的答案。
考慮離線,從1
11到n
nn推指標i
ii,維護起點在[1,
i]
[1,i]
[1,i
]內,終點在後面區間的答案,由於是區間的修改與查詢,故用線段樹維護。
考慮將指標右移一位到i
ii時,有終點在後面的mex
mexme
x什麼影響(相較於起點在i−1
i-1i−
1 [i
]a[i]
a[i]
後的終點不會影響,原來mex
mexme
x小於a[i
]a[i]
a[i]
的也不影響,而會將剩下的mex
mexme
x改為a[i
]a[i]
a[i]
,由於mex
mexme
x的單調性,修改是一段區間。
考慮對於乙個終點x
xx,如何計算起點在[1,
i]
[1,i]
[1,i
]內的區間的總答案。如果要每次加上新的答案(區間[i,
x]
[i,x]
[i,x]的mex
mexme
x),則對於mex
mexme
x不變化的部分不好做,考慮能否只在變化時算。而終點x
xx在起點右移時的mex
mexme
x又是單調不公升的,考慮記最後一段mex
mexme
x相等的答案,每次變化時把它加入歷史版本。設最後一段起點為las
tlast
last
,則答案為(i−
last
)×me
x(i-last)\times mex
(i−las
t)×m
ex,由於i
ii是變化的,先將式子拆開:mex
×i−l
ast×
me
xmex\times i-last\times mex
mex×i−
last
×mexex
mexme
x的和,把可靜態維護的las
t×me
xlast\times mex
last×m
ex加入歷史版本,查詢時即可利用當前的i與線段樹中的資訊得出答案。
(學軍集訓)環
對於乙個長度為的01串,下標從0到。定義兩種型別的操作 a型別 選擇乙個x xx,將序列迴圈右移x xx位,也就是新序列的第 i x n i x n i x n位對應原序列的第位。b型別 選擇乙個,滿足序列的第i ii個位置為1,且第 i 1 n i 1 n i 1 n位置不為1,交換序列的第i i...
(學軍集訓)探尋
探尋者皮特 pete 在乙個新的鈦礦上有領先優勢,需要您的幫助將採礦業務推銷給投資者。礦山可以 表示為一棵樹 礦山的入口是樹的根,其他樹節點是地下鈦礦的礦穴,樹的邊是皮特可以在兩個礦穴之 間 或對於和根相鄰的邊,在礦井入口和礦穴之間 挖掘潛在隧道。連線第礦礦床與其母礦的隧道的 長度為英呎。其中乙個葉...
(學軍集訓)揹包
有 n nn 種物品,第 i ii 種物品有 c ic i ci 個,體積為 v iv i vi 給定整數集合 s ss,從這 n nn 種物品中選出 k k s k k s k k s 種物品,每種物品選任意正整數 個,問可以得到哪些小於 l ll 的總體積值 對於所有的資料,滿足 1 n ci,...