P1903 國家集訓隊 帶修改莫隊

2021-10-21 05:57:38 字數 2572 閱讀 5364

題意

傳送門 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 維在塊內值域範圍受限,使第 w

ww 維在塊內有序,此時可以以較短的路線遍歷每個查詢。

具體而言,在查詢區間 [1,

n]

[1,n]

[1,n

] 進行分塊,以 l,r

,t

l,r,t

l,r,

t 為第

一、二、三關鍵字排序。設查詢次數 q

qq、修改次數 t

tt 與 n

nn 同量級,設 [1,

n]

[1,n]

[1,n

] 分為 a

aa 塊,那麼 l

ll 所在塊有 a

aa 種,r

rr 所在塊有 a

aa 種,總塊數為 a

2a^2

a2。在同一塊內,t

tt 呈單調性,那麼時間軸在各塊邊界修改次數為 o(n

)o(n)

o(n)

,在各塊內部修改次數為 o(n

)o(n)

o(n)

,總修改次數為 o(a

2n

)o(a^2n)

o(a2n)

;l ,r

l,rl,

r 在塊內的極大值與極小值差為 o(n

/a

)o(n/a)

o(n/a)

,塊間修改 o(n

)o(n)

o(n)

,總修改次數 o(n

×n/a

+a2n

)o(n\times n/a+a^2n)

o(n×n/

a+a2

n)。通過方程 n2/

a=a2

nn^2/a=a^2n

n2/a=a

2n,得到分塊數為 n1/

3n^

n1/3

,分塊大小 n2/

3n^

n2/3

。可以使用奇偶化排序進行優化。基本原理是對分塊的最後一維,即第 w−1

w-1w−

1 維,奇數塊對第 w

ww 維公升序排序,偶數塊第 w

ww 維降序排序,使第 w

ww 維在相鄰塊間修改的次數大概率減小。

#include

using

namespace std;

const

int maxn =

133335

, maxc =

1000005

;int n, m, qn, rn, res, id[maxn]

, col[maxn]

, rec[maxn]

, cnt[maxc]

;struct p1

} q[maxn]

;struct p2

r[maxn]

;inline

intread()

inline

void

add(

int i)

inline

void

del(

int i)

inline

void

upd(

int t,

int i)

intmain()

;else

r[++rn]

= p2;}

int w =

pow(n,

2.0/

3.0)

, t =

ceil((

double

)n / w)

;for

(int i =

1; i <= t;

++i)

for(

int l =

(i -1)

* w +

1, r =

min(i * w, n)

, j = l; j <= r;

++j)

id[j]

= i;

sort

(q +

1, q + qn +1)

;for

(int i =

1, l = q[1]

.l, r = l -

1, t =

0, ql, qr, qt; i <= qn;

++i)

for(

int i =

1; i <= qn;

++i)

printf

("%d\n"

, rec[i]);

return0;

}

P1903 國家集訓隊 數顏色 維護佇列

h yp erli nk hyperlink hyperl ink de scri ptio ndescription descri ptio n 這道題的帶修版本 s ol utio nsolution soluti on原來那道靜態主席樹就可以解決了,這道當然是樹套樹啦 可是,原來那道莫隊不是也...

國家集訓隊 數顏色 維護佇列(帶修莫隊)

題意 對給定的序列,回答m個詢問,q 詢問l到r中不同的顏色數量,r 將下標為x的顏色改為y 題解 帶修莫隊,相對普通的莫隊,加多了乙個關鍵字排序 include define num ch 0 define pn putchar n using namespace std templatevoid...

國家集訓隊 旅遊

題目背景 ray 樂忠於旅遊,這次他來到了 t 城。t 城是乙個水上城市,一共有 nn 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有 n 1n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心...