CF1948 | 似夢
閒來無事,vp 一下。
A.
只有連續段才能提供恰好兩個。
所以奇數一定無解,偶數只要形容 OOPP... 重複放就行。
\(\color{green}{\checkmark}\)
B.
一開始讀錯題了。 /tx
從後往前考慮,如果當前序列末尾加入後滿足遞增就直接加入(貪心地想,這樣上界是最大的),否則就必須要拆掉做子問題。
\(\color{green}{\checkmark}\)
C.
首先發現我們主動的走不會往左走。
dp,\(f_{i,j}\) 表示 \((i,j)\) 是否可達。
按縱座標作為階段轉移即可。
好像能直接 BFS,但是其實差不多。
\(\color{green}{\checkmark}\)
D.
列舉重複串的半徑,check 相當於在 01 序列上求極長連續段。
\(\color{green}{\checkmark}\)
E. \(\color{#DB7D74}{\star}\)
被結論題創飛了,被資料範圍騙光了。
由於和曼哈頓距離相關,嘗試將 \((i,a_i)\) 扔到平面直角座標系上。
考慮一些區域性的性質:一個團有何特點。
首先是其中點對間最大曼哈頓距離不超過 \(k\)。
其次,其在 \(x\) 軸和 \(y\) 軸上的投影一定是連續的一段區間。
再而,其大小必然不超過 \(k\)。
容易感性理解,證明亦不難(詳見這篇題解)。
自然嘗試讓每個團大小為 \(k\)(最後一個團可能達不到 \(k\))。
這容易做到。
我們考慮一個正方形,其對角頂點的曼哈頓距離為定值。
只需讓其他點被這個正方形包含即可。
把正方形的一條對角線垂直水平方向,定值取 \(m\),讓剩下的點在正方形的一組對邊上即可。
具體地,對於編號在 \([l,l+k)\) 中的點,取 \(mid = l + \frac k2\),按 \(mid, mid-1, \dots, l, l+k-1, l+k-2, \dots, mid+1\) 的順序降序放置 \([l,l+k)\) 即可。
\(\color{green}{\checkmark}\)
F.
計數簡單。
先考慮一個詢問怎麼做。
我們發現問題可以化歸到一邊有 \(x\) 個銀幣,另一邊有 \(y\) 個,求 \(x\) 個銀幣的價值比另一邊多 \(k\) 的機率。
先乘上總方案數,把機率轉成方案數。
我們關心 \(x\) 個銀幣中有幾個是 \(1\),這是一個組合數。
列舉差量把不等式轉成等式,有式子:\(\sum\limits_{c=k}\sum\limits_{d=0}\binom yd \binom x{c+d}\)。
由下指標反演推論,後面那個求和式是 \(\binom{x+y}{y+c}\)。
對下指標求綴和是沒法好好做的。
但是關注到 \(x+y\) 是一個定值,所以只需我們預處理出上指標為 \(x+y\) 時的下指標字尾和即可。
容易做到 \(O(n + q)\)。
\(\color{green}{\checkmark}\)
G. \(\color{#DB7D74}{\star}\)
轉化還是挺好的。
考慮樹的最大匹配是什麼,往二分圖方面考慮,二分圖最大匹配 \(=\) 最小點覆蓋。
那我們列舉最小點覆蓋集合再跑 MST 即可。
注意此時生成的 MST 只需保證列舉的點覆蓋集合是合法點覆蓋集合即可。相當於欽定若干條邊不選。
用 Prim 實現,複雜度 \(O(2^n n^2)\)。
還有一個做法,是把二分圖最大匹配轉化為點數減去最大獨立集。然後列舉獨立集,是類似的。
\(\color{green}{\checkmark}\)