點此看題
正解應該是帶修莫隊,我們這裡講一下樹套樹的做法。
本題主要涉及的問題是去重,我們定義nxt
[i
]nxt[i]
nxt[i]
為最靠近i
ii位置後面顏色和i
ii相同的位置,統計[l,
r]
[l,r]
[l,r
]裡面不同顏色的個數即統計∑i=
lrnx
t[i]
>
r\sum_^ nxt[i]>r
∑i=lr
nxt[
i]>
r,這個就是樹套樹。
考慮修改,就是改變三個值,設值從a
aa修改到b
bb,p
ap_a
pa是距離修改點左邊x
xx最近的值為a
aa的位置,nxt
[pa]
=nxt
[x
]nxt[p_a]=nxt[x]
nxt[pa
]=n
xt[x
],pb
p_bpb
是距離修改點左邊最近的值為b
bb的位置,則nxt
[x]=
nxt[
pb],
nxt[
pb]=
xnxt[x]=nxt[p_b],nxt[p_b]=x
nxt[x]
=nxt
[pb
],nx
t[pb
]=x
,可以每個值維護乙個關於位置的平衡樹,就可以log
\log
log找前驅了。
時間複雜度o(n
log2)
o(n\log^2)
o(nlog2)
,空間複雜度也一樣。
先咕一下吧,以後再補
數顏色 國家集訓隊
待修莫隊模板題 待修莫隊在普通莫隊的基礎上,額外維護乙個修改操作,每一次根據查詢操作的時間加入修改或是撤銷修改。實現蠻顯然的,配合 很容易搞懂。note 塊大小的證明參見這裡,此處不做贅述。include using namespace std namespace standardio templa...
國家集訓隊 數顏色
題目 洛谷p1903 bzoj2120。題目大意 給你一列數,有兩種操作 1.詢問區間 l,r 內不同數出現的個數。2.單點修改。解題思路 帶修莫隊。仍然運用分塊思路,加了乙個修改時間而已。所以以 l 所在的塊為第一關鍵字,r 所在的塊為第二關鍵字,修改時間為第三關鍵字排序即可。c code inc...
國家集訓隊 數顏色
墨墨購買了一套n支彩色畫筆 其中有些顏色可能相同 擺成一排,你需要回答墨墨的提問。墨墨會向你發布如下指令 1 q l r代表詢問你從第l支畫筆到第r支畫筆中共有幾種不同顏色的畫筆。2 r p col 把第p支畫筆替換為顏色col。題解 做這道題之前不會帶修改莫隊,山神學會了之後手 嘴 把手 嘴 教我...