LCP 4 覆蓋 狀壓DP

2021-10-02 16:46:38 字數 1121 閱讀 6537

oj

題意已經非常清楚了,這題其實跟[poj 2411]這道題類似,算是乙個加強版,都是放置多公尺諾骨牌,不過這個題新增了障礙物,也就是多加了判斷而已,不過也在放置邏輯上加大了難度。

核心思想依然是:列舉上一行的狀態,搜尋這一行所有可能的填寫情況。

我們定義如下這種填充表示方式:如果乙個骨牌是橫著放的,那麼它所在的兩個方格都填充1.如果它是豎著放的,那麼它所在的兩個格仔中,上面的那個填0,下面的這個填1.如下圖所示:

**實現

int

dp;boolean

no;// 根據之前一行的狀態來搜尋當前行的最大放置方式

void

dfs(

int presta,

int cursta,

int row,

int col,

int m,

int now)

else

return;}

// 如果當前位置有障礙物

if(no[row]

[col]

)else

// 豎著放置,能放置的前提是前一行留有空位

if(row !=0&&

((presta >> col)&1

)!=1)

else}}

public

intdomino

(int n,

int m,

int[

] broken)

for(

int i =

0; i < n;

++i)

dp[0]

[(1<< m)-1

]=0;

for(

int i =

0; i < n;

++i)

}int ans = integer.min_value;

for(

int i =

0; i

<< m)

;++i)

return ans;

}

狀壓dp之棋盤覆蓋

1.poj2411 題目大意 用2 1的骨牌覆蓋滿乙個n m的矩陣,求方案數。n,m 11 題目分析 由於n和m都很小,可以想到狀態壓縮dp。如果我們f i j 表示某i行的狀態j,在狀態j中,1表示已經覆蓋,0表示沒有覆蓋,那麼有三種情況 1.不放 2.橫著放 3.豎著放。用dfs來尋找每行和它上...

狀壓dp 玉公尺田 狀壓dp

相關 強相關 327.玉公尺田 狀壓dp 小國王 狀壓dp 是井字形,本題是十字形。思路 狀態計算 時間複雜度 n 2 n 2n o n 22n 12 2 24n 2 n 2 n o n2 12 2 n 2n 2 n o n22n 12 224 看著妥妥超時,但是裡面合法狀態很少 依舊可以過 在此,...

luogu 1990 覆蓋牆壁 狀壓dp

題目描述 description 你有乙個長為n寬為2的牆壁,給你兩種磚頭 乙個長2寬1,另乙個是l型覆蓋3個單元的磚頭。如下圖 0 0 0 00 磚頭可以旋轉,兩種磚頭可以無限制提供。你的任務是計算用這兩種來覆蓋n 2的牆壁的覆蓋方法。例如乙個2 3的牆可以有5種覆蓋方法,如下 012 002 0...