大佬部落格
無刪除莫隊:
沒打過但是可以拿來湊數。
不就是用可回退化(你一定需要看一看[十二省聯考2019]希望)的莫隊來。。。。
skip。
二次離線莫隊:
一開始看是ynoi的題以為沒有啥可拓展性。
然後看了上面那位大佬的部落格才發現這個方法大有可為。
莫隊實際上是把o(m
)o(m)
o(m)
個詢問拆分成o(n
m)
o(n\sqrt m)
o(nm)
個詢問的離線演算法。
那麼每個(標準的)莫隊可以分成3個部分:
1.移動一步後根據自己維護的資料結構等計算增加的答案。o(n
m)
o(n\sqrt m)
o(nm)
次,單次查詢o(a
)o(a)
o(a)
2.移動一步後維護自己的資料結構。o(n
m)
o(n\sqrt m)
o(nm)
次,單次維護o(b
)o(b)
o(b)
3.移動到目標區間後利用自己的資料結構計算答案。o(m
)o(m)
o(m)
次,單次詢問o(c
)o(c)
o(c)
我們可以發現3的o(m
)o(m)
o(m)
次數特徵進行優化,用一些插入複雜度低使得詢問複雜度高的資料結構如值域分塊。當然這不是我們需要的東西。
如果(正如此題),我們把增加的答案分為兩個字首對新增的點x的貢獻的答案之差。
那麼我們只需要算字首的貢獻。
那麼我們只需要知道字首的資料結構是什麼樣子。
即1~n一路插入過來。複雜度o(n
b)
o(nb)
o(nb
)在插到每乙個字首時,對於莫隊中會需要用到這個字首給他貢獻的每個點x,求貢獻。o(n
an
)o(na\sqrt n)
o(nan
)那麼複雜度就是o(n
b+na
n+nn
+mc)
o(nb + na\sqrt n + n\sqrt n + mc)
o(nb+n
an+
nn+
mc)然後平衡一下選擇乙個a
aa小使得b
bb大的資料結構比如說陣列即可得到乙個優秀的複雜度。
前提是可以把貢獻拆分。
莫隊 高階篇 二次離線莫隊與區間逆序對問題
一種高階科技,在noi2020day1t3 之後,不會 a 部分分 裸 區間逆序對 的餘下定決心要好好學習根號演算法。二次離線莫隊聽名字就是個非常高階的東西,而且雖說是二次離線,但它的複雜度仍舊是 o n sqrt n 非常神奇。一般用於移動左右端點時複雜度較大的莫隊。例如區間逆序對,它有乙個非常顯...
洛谷 P4887 模板 莫隊二次離線
原題鏈結 給定乙個長度為 n 的序列和乙個常數 k 每次詢問乙個區間 l,r 內,有多少對 i,j 滿足 l leq i,且 a i oplus a j 的二進位制表示下恰好有 k 位為 1 資料範圍 1 leq n,m leq 10 5,0 leq a i 2 0 leq k leq 14 按照普...
莫隊演算法 無修
無修的莫隊演算法,是用來處理沒有修改操作的序列的詢問操作的離線演算法 莫隊演算法的本質是什麼?大概就是分塊加上乙個大家可能都想到過的東西 也就是乙個區間1l r,其左邊的區間2 l 1 r 1 的和轉化到區間1的和只需要o 1 的時間複雜度 也就是sum 1 su m2 a r a l 1 sum1...