插頭Dp總結

2022-03-16 14:16:34 字數 2142 閱讀 7181

題目大意:給出n*m的方格,有些格仔不能鋪線,其它格仔必須鋪,可以形成多個閉合迴路。問有多少種鋪法?

插頭dp板子題,題目要求可以是多個迴路,

只需要兩個狀態,代表是否有插頭即可

$plug_1$ $plug_2$

0     0     新建乙個插頭插向兩邊  

0     1     轉/不轉彎

1     0     同上

1     1     合併插頭

題目大意:乙個 m * n 的棋盤,有的格仔存在障礙,求經過所有非障礙格仔的哈密頓迴路個數

與t1不同的是必須是乙個閉合迴路

類似於括號匹配,兩個插頭代表是左右

$plug_1$ $plug_2$

0     0     新建乙個插頭插向兩邊 

0     1     轉/不轉彎

0     2     同上

1     0     同上

1     1     合併插頭,並且把$plug_2$的右插頭改為左插頭

1     2     注意這種情況一定是一對插頭碰到了一起,直接判斷是不是最後乙個方塊統計答案或者棄掉

2     0    轉/不轉彎

2     1    直接合併

2     2     合併插頭,並把$plug_1$的左插頭改為左插頭改為右插頭

第一行為兩個正整數n和m,表示遊樂場的大小為n×m。

n和m滿足:2<=n<=100,2<=m<=6。

接下來的n行,每行有m個整數,第i行第j列表示遊樂場的第i行第j列的小格仔中的娛樂專案的滿意度,滿意度的範圍是[-1000,1000]。同一行的兩個整數之間用空格隔開。

輸出檔案中僅一行為乙個整數,表示最高的滿意度之和。

這道題與t2類似,只是不需覆蓋滿,仍要特別注意1-2合併的情況

一家縮寫為 lll 的公司正在設計 logo,他們的初步方案是在一張方格上放置三個 l 形的圖案以及一些額外的裝飾性圖形。例如:

(灰色區域表示裝飾性圖形)

三個 l 圖案和裝飾性圖形均放置在方格之中,且必須佔滿方格,「l」的橫豎筆畫長短均可,但長度必須大於零(即不能退化為一條線段)。另外,為了使 l 圖形醒目且容易識別,設計師規定三個 l 形圖案之間不能有重疊或交叉的部分。當然,l 形圖案也不能穿過裝飾圖形或與之重疊。

現在設計師已經確定了所有裝飾性圖形的位置,希望你計算一下放置不同的 l 形圖案總共可以設計出多少個 logo。

設dp[i][j][k][l][r]代表到了第i行第j列已經設計了k個'l'型,斜著有沒有插頭,其他插頭的分布狀態是r(已經預處理)的方案數

直接輪廓線dp即可,分類討論比較簡單不再描述

題目大意:要求找一條路徑,使得每個點最多經過一次,並且點權值之和最大。

很不錯的一道題,插頭的定義能對前面的題有乙個更深的理解

這道題與t3區別在於不需要是一條迴路,

這樣便會出現一些在當前狀態下沒有與其匹配的插頭,

我們不妨稱其為獨立插頭,用3來表示,

當然當前狀態下可能會出現2個獨立插頭,它們只是還沒有會合而已。

$plug_1$ $plug_2$

0  0  建立一對(1,2)/某個方向建立3

0  1  轉/不轉/停止並且2改3

0  2  轉/不轉/停止並且1改3

0  3  轉/不轉

1  0  同0,1

1  1  右2改1

1  2  (只剩一對1,2)則更新ans

1  3  左2改3

2  0  同0,2

2  1  合併

2  2  左1改2

2  3  左1改3

3  0  轉/不轉/(只剩乙個3)則更新ans

3  1  右2改3

3  2  右1改3

3  3  (只剩一對3,3)則更新ans

插頭dp的ans更新一般都比較神奇,可能不侷限於最後的某乙個狀態,而是在dp的過程中對於某些可以終止的狀態進行統計

比如說這個題,可以在(只剩一對3,3),(只剩一對1,2)(只剩乙個3)的情況下更新答案

總結 插頭 dp

集中做完了插頭 dp 寫一下題解。一開始學的時候還是挺矇的。不過後來站在輪廓線 dp 的角度上來看就簡單多了。其實就是一種聯通性 dp 只不過情況比較多而已了。本來轉移方式有兩種。逐行和逐格轉移。不過逐行轉移因為分類太多所以被捨棄了。一般的插頭 dp 採用逐格轉移。插頭表示已經進入當前格仔的狀態,而...

插頭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 ...