無刪除莫隊與二次離線莫隊

2021-09-24 20:39:08 字數 1246 閱讀 1566

大佬部落格

無刪除莫隊:

沒打過但是可以拿來湊數。

不就是用可回退化(你一定需要看一看[十二省聯考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...