2024.07.12模擬賽總結

longzhaocheng發表於2024-07-12

前言:炸沒

T1

首先觀察到,圖形一定是凸的,如果是凹的就不滿足條件
那麼設\(f[i][l][r][p=0/1][q=0/1]\)表示到了i行,填l到r,\(1--k-1\)有沒有左端點比l小的區間,右端點有沒有比r大的區間
因為這幾種情況互不干擾,所以可以做,暴力是\(O(n^5)\)的,但發現把決策的l,r寫出是可以用字首和最佳化的,於是就變成了\(O(n^3)\)

T2

考慮怎麼處理轉折點,即i和i+1決策不同,考慮批次處理連續的同樣的,以U為例
首先設到i的最小的位置為k,設與i+1決策相同的相鄰的有q個,設從k開始找長度為q+1的最長上升子序列,設最小的位置為\(k1\)
那麼,我們斷言,k1就是滿足前i+q的最小位置,分類討論即可證明
那麼就可以對於轉折點處理,用樹狀陣列最佳化即可

T3

考慮總的決策數不會很多,因為有限制,於是直接暴力搜尋即可

T4

算是一道比較好寫好調的線段樹題了
首先,考慮重心的性質,它的子樹權值和一定不小於總的權值和的一半
再考慮深度最小帶來的性質,即不小於改成大於
那麼就考慮從一個一定在重心子樹中的點開始倍增然後判斷即可
這個點怎麼找呢?把樹dfs序求出,它的帶權中點一定在其中
因為如果這個點如果不在,那麼這個點的某個祖先一定更優,與定義矛盾
於是就可以直接做了,有點卡常,\(O(n\log^2 n)\)
—————————————————————————————————————————————————————————————————————————————————————————————
下次加油!!!