poj 2411 狀態壓縮dp

2021-07-11 01:06:56 字數 626 閱讀 9180

//題意:乙個n*m的矩形用 1* 2 的卡牌填滿 問共有多少種方法

//方法:狀態壓縮+動規的思想 dp[i][j] 表示前i -1行全部填滿 第i行狀態為j的方法總和

// 狀態j的二進位制狀態 0 表示該位被占用了 1 代表 該為是空的

//狀態轉移方程:dp[i][j] = sum(dp[i - 1][k]) (狀態j可由狀態k推出)

//起初有乙個地方我有點模稜兩可

//比如現在第i -1的狀態 為 100111 它可以推導出 第i行的狀態為 111111

//但是並不符合要求

//後來仔細想了想 111111 是可以由 100111推出來 但是實際上是由 (100111)的上乙個狀態推出來的

#include #include #include #include #include using namespace std;

long long dp[13][1<<11];

long long ans[15][15];

int n, m;

int isok(int s, int ss);

void init()

return 0;

}

poj 2411 狀態壓縮DP

用乙個vector容器來記錄當前狀態下有哪些狀態可以繼承。比如說vec i 裡面的所有的數代表當第一行為i狀態時,第二行的可行狀態。對於狀態i,其二進位制中0的地方表示為當前狀態為豎著的木板的下半部分。其二進位制中1的地方表示為當前狀態為橫著的木板或者豎著的木板的上半部分。include inclu...

POJ 2411 狀態壓縮DP

題目大意 給乙個h w的方格,現給出1 2和2 1的兩種小方塊,求出把h w方格鋪滿的不同方案數 1 h,w 11 分析 首先能想到的是如果h w為奇數,那麼肯定不能放滿,結果為0 如何表示狀態 從題目看資料很小,那麼很容易想到用二進位制來表示狀態,0表示當前方格沒放,1表示放了 這裡用dp r c...

poj2411 狀態壓縮dp

一道經典狀態壓縮dp題目。題意很明確,讓用1 2或2 1的小方格鋪滿地板。根據狀態壓縮的慣用思路,當前行的地板狀態是由當前行和上一行共同決定的,肯定要用乙個二進位制數表示一行的狀態,然後再用狀態轉移方程轉移求解。這道題可以這麼想,對於每個狀態,如果是1 2的橫著放,將兩個位置都標記為1,如果是2 1...