總結 插頭 dp

2022-03-26 02:50:28 字數 1878 閱讀 2402

集中做完了插頭$dp$

寫一下題解。

一開始學的時候還是挺矇的。

不過後來站在輪廓線$dp$的角度上來看就簡單多了。

其實就是一種聯通性$dp$,只不過情況比較多而已了。

本來轉移方式有兩種。逐行和逐格轉移。

不過逐行轉移因為分類太多所以被捨棄了。

一般的插頭$dp$採用逐格轉移。

插頭表示已經進入當前格仔的狀態,而並不是將要進入的狀態。

狀態的表示方式常見的有兩種:最小表示法和括號表示法。

括號表示法不如說是廣義括號表示法的特殊一種情況,每個插頭也就是左右括號就是表示兩個相匹配的迴路部分,而最小表示法則是一般的廣義括號匹配,只是括號只是單純的表示一條線路的兩端。

1.$ural 1519 formula 1$

括號表示法裸題。

設兩個插頭,1表示左括號,2表示右括號。

分一下類就可以了。

0.0 如果是障礙格仔就直接轉移,如果是普通格仔就可以開兩個新的左右括號。

下面的討論均在非障礙格仔下。

0.1|0.2|1.0|2.0 將插頭下移或者右移。

1.1|2.2 首先將兩個插頭消除,找到其中乙個插頭匹配的插頭,並將之改成這兩個插頭。

2.1 消除插頭。

1.2 在最後乙個非障礙格仔更新答案。

2.$city$

跟上一題一模一樣,不過是限定了轉移的方向而已。

3.郵遞員

仍然是括號表示法。

其實和第一題仍然沒什麼區別,就是要遍歷所有的地方,並且形成迴路,注意到迴路的順逆時針走向是不同方案,所以最後答案*2。

4.地板

這個就是最小表示法了。

設兩個插頭1,2分別表示沒拐過和拐過彎的$l$形狀,要求沒有障礙物的部分都鋪磚。

那麼開始分類討論。

如果沒有障礙物:

0.0 -> 1.0|0.1|2.2 表示當前點伸出能夠從兩個方向伸出兩個可以拐彎的,或者根本就把這個點當作轉折點,那兩個方向都不可以拐彎。

0.1 -> 0.1|2.0

1.0 -> 1.0|0.2

0.2 -> 0.2|0.0 如果沒有其他插頭,並且在最後乙個非障礙格仔可以更新答案。

2.0 -> 2.0|0.0 如果沒有其他插頭,並且在最後乙個非障礙格仔可以更新答案。

1.1 -> 0.0 兩個沒拐彎的匹配上了。

2.2 -> 無法轉移

1.2 -> 無法轉移

5.標識設計

其實和上乙個題幾乎一模一樣。

只不過在最後新增一維表示當前已經出現了的$l$有幾個。

如果已經出現了的有$3$個並且當前這個格仔可以作為其中某乙個的結束位置,那麼更新答案。

6.神奇遊樂園

和第一題一模一樣就是把求方案改成了求最值。

7.$manhattan wiring$

這個題由於確定了起點和終點,所以不需要用到括號匹配。

只用兩個插頭表示是哪個線的插頭即可。

8.$parkii$

看起來是括號匹配,其實是最小表示法

和神奇遊樂園大體上一樣,是cdq的**題了。

我們考慮新加入乙個獨立插頭表示一條獨立的路徑,

由於這次要求路徑,所以會麻煩一點,這裡的左右括號就不僅僅表示迴路的兩頭了,而是表示一條路徑的兩頭,這就是所謂一般性廣義括號表示法,也就是最小表示法。

左右括號轉移大體上和神奇遊樂園一樣。

多出來的獨立插頭設為3。

多出來的轉移就是:

0.0 -> 0.3|3.0

0.3|3.0 -> 0.3|3.0 如果只有乙個插頭的話就可以更新答案了。

3.1|3.2|1.3|2.3 -> 0.0 清空當前兩個括號,然後把1或者2對應的括號改為3。

3.3 -> 如果只有這兩個括號的話就可以更新答案了,不轉移。

暫時這麼多。

插頭Dp總結

題目大意 給出n m的方格,有些格仔不能鋪線,其它格仔必須鋪,可以形成多個閉合迴路。問有多少種鋪法?插頭dp板子題,題目要求可以是多個迴路,只需要兩個狀態,代表是否有插頭即可 plug 1 plug 2 0 0 新建乙個插頭插向兩邊 0 1 轉 不轉彎 1 0 同上 1 1 合併插頭 題目大意 乙個...

插頭DP總結

從跳樓到蒙b。插頭dp,電源插頭dp,工業插頭dp,插座dp。額我們先將一些技能的,比如說hash表,這年頭連hash表都不會打,簡直就是yasi。hash使用乙個表頭加鍊表的結構實現陣列的使用。比如說要統計值域到1e9的一列數出現次數,顯然我們就把一列數壓一下,比如模乙個質數同餘的放在一起,然後把...

插頭DP 入門

強烈推薦 hdu 1693 eat the trees 多迴路的不用判聯通狀態,二進位制即可,轉移情況2 2種。時間o n m 2 n 空間o n 2 n 插頭dp include include const int maxm 13 const int maxn 1 12 typedef long ...