CF1948 | 似夢

BK0717BK0717發表於2024-04-06

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}\)

相關文章