膜拜duyi CF1436E題解

2021-10-10 04:31:14 字數 3185 閱讀 2915

這篇文章參考了神仙duy

iduyi

duyi

的題解。個人認為他的那篇文章寫得比這篇還要好,可以去看看他的這篇題解;如果看不懂的話 ,就來看看我的。

sto duyi orz!!!

duyi ddjxd!

求乙個序列的所有連續區間的mex

mexme

x的me

xmex

mex。

首先,看到本題,我們不難想到三個思考方式:

①直接從mex

mexme

x的me

xmex

mex入手,挖性質;

②從m ex

mexme

x入手,擴充套件到mex

mexme

x的me

xmex

mex;

③拆分這兩個mex

mexme

x。從①入手,似乎並沒有什麼用。

從②入手呢?很顯然,mex

mexme

x就是乙個區間中最小的,沒有出現的數。

從③入手呢?結合②,我們似乎完成了乙個轉化:

\lfloor

⌊ 對於每乙個值x

xx,我們要判斷是否存在乙個區間的mex

mexme

x等於x

xx。 ⌉

\rceil

⌉ 我們從1

11到n+1

n+1n+

1列舉每乙個x

xx,如果不存在這樣的區間使得它的mex

mexme

x等於x

xx,那麼就直接輸出x

xx並結束即可。

現在的難點,在於如何判斷是否存在乙個區間的mex

mexme

x等於xxx。

再重複一遍mex

mexme

x的定義: mex

mexme

x就是乙個序列中最小的未出現的數。

即,乙個區間的mex

mexme

x如果要等於x

xx,需要滿足兩個要求:

①這段區間沒有xxx;

②這段區間有1,2

,3……

,(x−

1)

1,2,3……,(x-1)

1,2,3…

…,(x

−1)。

我們需要以①,②中的乙個為條件,另乙個為要求去尋找這樣的區間。

我們考慮以更加簡單達到的①為條件。我們找出所有x

xx(可以預處理),可以發現任意兩個x

xx均不能出現在同乙個區間中。

為了滿足②,可以發現乙個「單調性」:如果乙個區間有1

11到x−1

x-1x−

1這些數,那麼它的子區間不一定有;如果它的子區間有,那麼它一定有。

所以,我們對於劃分出來的這些區間,分別求一下mex

mexme

x即可。如果這些mex

mexme

x都不等於x

xx,那麼這些大區間的子區間顯然都無法滿足要求。

可以發現,對於不同的x

xx,劃分出來的區間的數量的級別只有n

nn。於是,我們只需要完成下面這種操作: ⌊

\lfloor⌊nn

n次查詢一段區間的mex

mexme

x⌉\rceil

⌉。對於這種查詢一段區間的mex

mexme

x的題目,我們有乙個套路:莫隊

然後,每次我們單點修改(add/delete),區間查詢mex

mexme

x的時候直接線段樹上二分即可。

修改的時間複雜度是o(n

nlog⁡n

)o(n \sqrt n \log n)

o(nn

​logn)

,查詢的時間複雜度為o(n

log⁡n)

o(n \log n)

o(nlogn)

,總時間複雜度為o(n

nlog⁡n

)o(n \sqrt n \log n)

o(nn

​logn)

。由於資料範圍是n≤1

05

n≤10^5

n≤10

5,無法通過。

可以發現,修改操作足足有n

nn \sqrt n

nn​個,而查詢操作只有o(n

)o(n)

o(n)

。但是,用線段樹做修改與查詢操作都是單次log

⁡\log

log級別的,那我們能不能「犧牲查詢的複雜度,來優化修改操作的複雜度」呢?

答案是可以的,分塊可以搞定。對於每次修改,由於是單點的,我們直接o(1

)o(1)

o(1)

打上標記即可;對於一次查詢,我們掃一遍所有的塊,如果這一塊沒有被填滿,顯然mex

mexme

x的值在這一塊內;然後我們暴力掃瞄一下這一塊即可。

單次修改的複雜度為o(1

)o(1)

o(1)

,單次查詢的複雜度為o(n

)o(\sqrt n)

o(n​)。

總時間複雜度o(n

n)

o(n \sqrt n)

o(nn​)

,本題被完美解決。

毫無疑問,這是一道絕世好題。而duy

iduyi

duyi

巨佬能切掉這題,足見他之神仙;而我卻冥思苦想1h1h

1h,只想到了第乙個par

tpart

part

中的東西,足見我有多菜。

我們從mex

mexme

x的定義本身,考慮轉化為「查詢是否存在乙個區間的mex

mexme

x等於x

xx」,又通過貪心的決策包容性,轉化為了「查詢一段區間的mex

mexme

x」,緊接著使用經典的莫隊套權值線段樹上二分來得到了本題的「正解」,可惜時間複雜度多了乙個log

⁡\log

log。最後,根據乙個套路,我們考慮到了「根號平衡」,即對於「修改與查詢不平均」的問題都可以考慮下分塊是否可以優化。

dylstxdy!

咕咕咕

膜拜神牛 LIS

在n nn個二元組 ai bi a i,b i ai b i 中選擇若干個,使得被選擇的任意兩個二元組i,j i,ji,j均不滿足ai aj a i leq a j ai aj 且bi b jb i leq b j bi bj 考慮把一維為關鍵字公升序排序,這樣就轉變成另一維的lis lisli s...

膜拜神牛 LIS

在nn 個二元組 ai bi ai bi 中選擇若干個,使得被選擇的任意兩個二元組i,j i,j均不滿足ai ajai aj 且bi bjbi bj 考慮把一維為關鍵字公升序排序,這樣就轉變成另一維的lis lis問題了。但是需要考慮其中一維關鍵字相同時的情況。顯然此時將另一位降序排列即可。incl...

nssl 1336 膜拜神牛

d es crip tion description descri ptio n 給定長度為n nn的序列a aa和b bb,若滿足ai aj a i geq a j ai aj 且bi b jb i leq b j bi bj 則i,ji,j i,j互相膜拜,求最大的互不膜拜集合 資料範圍 n 1...