狀態壓縮dp入門 鋪磚問題

2021-06-26 21:50:19 字數 642 閱讀 6572

mondriaan's dream       &          hardwood floor

第一道題目是只有一種磚,2x1可以橫著鋪,可以豎著鋪,問有多少種鋪法
第二道是有兩種磚,一種是2x1的,一種是2x2的去掉乙個1x1的角也是問有多少中鋪法
首先第一道我們用0 1來表示不鋪和鋪兩種狀態
每一行用01字串表示狀態
然後再轉化為乙個十進位制數表示,就會發現複雜度變得很小
空間複雜度變得也很小
接下來我們判斷什麼時候可以鋪
只要上下都是0或者左右連續的塊都是0就可以鋪
只要dfs一下即可
a代表當前的行數,b代表當前的狀態
void dfs(int a,int b,int cnt)

dfs(a,b,cnt+1);

if(cnt<=m-2&&!(b&(1《第二道題意是有六種情況,

判斷的時候是一樣的

就不做介紹了

bool judge (int x,int i){ return (x&(1<

void dfs(int pos1,int pos2,ll add){

if(pos1 == (1<=1){

dfs(pos1|(1<

動態規劃 狀態壓縮 廣場鋪磚問題

有乙個n行m列的廣場,需要用1 2小磚鋪蓋,小磚之間互相不能重疊,問有多少種不同的鋪法?題解設f i j f i j f i j 表示第i ii行,狀態為j jj的方案數。在狀態j jj中,1 11表示豎著放長方形的上半部分。0 00表示其餘部分。顯然上一排空缺的部分肯定是要豎著放置的。就看剩下橫著...

狀態壓縮dp(鋪瓷磚問題)

今天蒜頭君裝修新家,給家裡買了一種 1 times 21 2的長方形 如圖1 新瓷磚。蒜頭君是個懂得審美的人,畢竟人生除了金錢,還有詩和遠方。這個時候蒜頭君就在想,這種長方形的瓷磚鋪到乙個 10 times 1010 10 的地面上有多少種方案?如圖2 是 4 times 44 4 地面的一種方案 ...

狀態壓縮DP入門

中考前乙個學期都沒怎麼碰資訊,終於中考完了,第乙個來學習一下幾個dp。狀壓dp在提高組好像挺常考,而且我也一直不太會,便來學習一下。狀壓dp的基礎便是位運算。先來列幾個 與運算,二進位制下每一位進行如下運算 1 1 1 1 0 0 0 1 0 0 0 0,如 110 100 100,十進位制下即表示...