h yp
erli
nk
hyperlink
hyperl
ink de
scri
ptio
ndescription
descri
ptio
n 這道題的帶修版本
s ol
utio
nsolution
soluti
on原來那道靜態主席樹就可以解決了,這道當然是樹套樹啦
可是,原來那道莫隊不是也能做嗎?現在能不能也能用莫隊做呢?
答案是肯定的,那就是今天的主角:帶修莫隊
加個時間戳就可以了2333,同時排序要先按l
ll再按r
rr最後按ttt
記住分塊的大小要自己列方程解呀,這道題取t=n
q3
t=\sqrt[3]
t=3nq
,可以達到本演算法理論最快複雜度o(n
4q3)
o(\sqrt[3])
o(3n4q
),開個氧氣就過了2333
c od
ecode
code
#pragma gcc optimize("ofast")
#pragma gcc optimize("inline")
#include
#include
#include
#include
#define n 50010
using
namespace std;
inline
long
long
read()
char s[5]
;int belong[n]
,cnt[
1000010
],a[n]
,t,n,lenq,lenc,tim;
long
long ans[n]
,now;
struct node
}q[n]
;struct data
c[n]
;inline
void
add(
int x)
inline
void
del(
int x)
inline
void
work
(int tim,
int i)
swap
(c[tim]
.val,a[c[tim]
.pos]);
return;}
signed
main()
else
if(s[0]
=='r')}
t=ceil
(exp((
log(n)
+log
(lenq))/
3));
for(
register
int i=
1;i<=n;i++
) belong[i]
=(i-1)
/t+1
;sort
(q+1
,q+1
+lenq)
;for
(register
int i=
1,l=
1,r=
0;i<=lenq;i++
)for
(register
int i=
1;i<=lenq;i++
)printf
("%lld\n"
,ans[i]);
}
P1903 國家集訓隊 帶修改莫隊
題意 傳送門 p1903 國家集訓隊 數顏色 維護佇列 題解帶修改莫隊與普通莫隊相比多了乙個對應修改操作的時間軸,每個查詢由二維的 l,r l,r l,r 變為三維的 l,r,t l,r,t l,r,t 基本思路即對查詢的前 w 1 w 1w 1 維分塊,使前 w 1 w 1w 1 維在塊內值域範圍...
國家集訓隊 數顏色 維護佇列
然而這題還帶修改。帶修改的莫隊怎麼做呢?於是我趕緊去補習了一波。對於當前詢問,可以知道的是只有它之前的修改操作能夠對它造成影響。所以我們可以記錄下每個詢問的前面有幾次修改 struct queryq maxm struct changec maxm main函式中 for register int ...
國家集訓隊 數顏色
點此看題 正解應該是帶修莫隊,我們這裡講一下樹套樹的做法。本題主要涉及的問題是去重,我們定義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...