CSP-S 考前做題

xiaohuzai發表於2024-10-24

P11218

首先還是博弈論題要麼打表找規律要麼dp。

然後注意到 \(2 \times n\) 網格這個東西非常典,狀態數很少,可以狀壓。

首先我們做一點觀察:不難發現 \(1 1\) 一定全選, \(0 0\) 可以選一個,然後 \(0 1\) 可以選兩個然後沒貢獻,這樣他就沒法換,跑一遍最大子段和。

然後注意到他換隻能換 \(0 1\)

如果你選了一些 \(0 1\), 那他一定會給你定點爆破,把那些 \(0 1\) 換了,你損失 \(2 \times m\) 答案。

然後注意到你如果 \(0 1\)\(1\) 的個數很多的話那你可以選,但是 $ < 2 \times m$ 列肯定不優,不妨把 \(2 \times m\) 拿出來,然後你現在就相當於選一個聯通塊,然後你要最大化 1 個數 - 0 個數。

然後注意到 \(2 \times n\) 網格這個東西非常典,狀態數很少,可以狀壓。

然後設 \(f_{i,S}\) 表示 以 \(i\) 結尾狀態 \(S\) 就做完了。

code

我自己想的時候到選聯通塊那一步把問題錯誤的轉化成了最大子段和,然後發現是假的,後來沒想到怎麼刻畫聯通塊。建議重新審視問題。