省選模擬70

2022-03-26 19:00:23 字數 611 閱讀 6347

如果我們將區間合併的過程看做一棵樹,那麼答案就是樹的深度。

考慮檢驗乙個區間是否可能是樹上的乙個節點,那麼只要判斷這個區間能否分成兩個區間即可。

考慮找到較小的區間的長度。在區間的左端點處查詢區間內的最靠右的兩個配對的點,那麼這兩個點的差就是區間長度。

特判一下兩個區間長度一樣即可。

首先 可以發現,第二個人的作用是決定第乙個人從哪乙個位置下去,所以牆的位置必然是一段連續區間。

考慮dp。令$f[i][l][r]$表示當前在$[l+1,r]$有牆,當前棋子在$l$的最優解。同理令$g[i][l][r]$表示當前$[l,r-1]$有牆,棋子在$r$的最優解。

那麼考慮轉移,當前是第二個人做決定,所以他可以決定當前要不要在下面放牆。假如放,那麼另外乙個人會選擇走到兩邊沒有牆的位置。

然後直接轉移就行了。

對於任意子集的mex,有乙個結論是,假設mex為$x$,$x$為第乙個滿足所有小於等於$x$的數加和為$x-1$的數。

有了這個結論就很好做了,前面幾個操作可以用顯然的可持久化線段樹來維護,合併的操作只要線段樹合併就行。

然後對於查詢,找到歷史版本對應的線段樹的根節點,然後暴力跳,顯然跳的次數不會超過log次。

複雜度$o(nlog^2n)$

省選模擬 19 09 11

ps.博主趁資訊課摸魚考的暴零模擬 看門人憑感覺就知道是長鏈剖分,將路徑查分一下,dis u di sv 2 dis lc adis u dis v 2 dis disu disv 2 disl ca 維護fu,if fu,i 表示u的子樹,深度為 i 的點的 dis disdi s最大值 考慮如何...

省選模擬96

容易發現當 k 3 時無解。然後容易證明當 k 3 時,只有 m 3 才是有解的。然後直接做不好做,考慮欽定然後容斥出合法方案。對於 k 3 列舉乙個點,然後計算另乙個的方案數。其他情況類似,欽定滿足條件的角,然後容斥。然後對於每乙個 o n 的式子用組合恒等式大力化簡就可以做到 o 1 了。考慮每...

省選模擬86

首先考慮基礎的dp定義,那麼發現轉移需要的係數只和dp是奇數的點的個數有關,所以將這個東西記錄在dp狀態中就行了。然後推一下dp轉移,發現轉移係數和奇數的點的個數沒有關係,只與是否存在這樣的點有關,所以用01來記錄就可以了。考慮用總方案減去不合法的方案,也就是1號點能到達的點和2號點能到達的點沒有交...