省選模擬70

A. 小 Y 增員操直播羣

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

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

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

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

 

B. 小 J 真愛粉交流羣

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

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

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

  然後直接轉移就行了。

 

C. 青青草原播種計劃

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章