【題解】CF1997
yeyou26發表於2024-11-08
A
- 首先,插入的字元必須和左右兩邊的字元都不一樣
- 其次,對於插入位置的選擇,顯然最好插在兩個一樣的字元中間,如果沒有一樣的字元,插在最前面即可
B
- 觀察樣例發現題目中要求的位置就在樣例中
- 手玩一下,嘗試改變樣例裡那個形狀,發現改變任何一個格子都不滿足題意,所以得出結論:題目要求的位置當且僅當六個格子形如
...
*.*
C
- 首先,左括號為1,右括號為 -1,合法括號串顯然滿足字首和非負
- 在奇數位置上,字首和總是二的倍數
- 如果要儘量縮小匹配括號之間的距離,顯然能早放右括號就早放右括號
- 如果某個奇數位置的字首和是 0,顯然只能放左括號
- 否則,一定會放右括號,這樣做一定沒有後效性:因為如果放的話,字首和最少是 2,一定可以支援連續放兩個右括號,然後就到下一個奇數位置了
D
- 注意到 \(u\) 可以取到的最大值與子樹內的最小值有關,考慮樹形 DP
- 設 \(f_u\) 表示 以 \(u\) 為根的子樹內最小值的最大值
- 容易列出轉移:\(f_u=min(min_{v\in u}(f_v),\frac {min_{v\in u}(f_v)-a[u]}{2}+a[u])\)
- 對於葉子:\(f_u=a_u\)
- 對於根:\(f_u=a_u+min_{v\in u}(f_v)\)
E
- 容易發現:對於一個怪物,k 越大,越容易蘸豆,k 越小,越不容易蘸豆
- 觀察詢問的形式,大膽猜想回復詢問是 \(O(1)\) 的;而我們對於每個怪物 \(i\),要計算出:k 至少為多少才能與這個怪物蘸豆
- 考慮二分:設當前二分的值為 \(k\),則不與當前怪物蘸豆的充要條件是:\(k\times a_i<=在第 i 個怪物之前蘸豆的總次數\)
- 注意到 \(在第i個怪物之前的蘸豆總次數\) 難以快速求出,但注意到,我們在計算到 \(i\) 時,已經算出了與前 \(i-1\) 個怪蘸豆所需的最小 \(k\),於是我們可以使用樹狀陣列快速求出 \(在第i個怪物之前的蘸豆總次數\)
- 時間複雜度 \(O(n\log^2{n})\)