Luogu P1879玉公尺田(狀壓DP)

2022-05-01 01:54:08 字數 885 閱讀 2289

題目鏈結

資料範圍這麼小,難度又這麼大,一般就是狀態壓縮dp了。

對輸入進行處理,二進位制表示每一行的草地狀況。如111表示這一行草地肥沃,壓縮成7.

所以f[i][j]表示第i行狀態為j時的方案數

狀態j指的是乙個二進位制集合,有牛在吃草的位置是1,不再吃草的位置是0

f[i][j]=sum(f[i-1][k])

限制:(1) j必須是草地狀況的子集。很好理解,如果有牛在貧瘠草地上吃草……會被投訴到動物保護協會的

(2) j 的相鄰兩個位置不能都是1。 **表示為!(j&(j<<1)

(3) k 的上述兩個限制。

(4) k和j沒有交集。這樣可以保證沒有相鄰兩個位置是1。 

**如下

#include#include

#include

#include

#define mod 100000000

#define max ((1namespace

std;

inline

long

long

read()

while

(isdigit(ch))

return num*f;

}int f[20][200000]=;

int s[20

];int

ans;

intmain()

for(int i=1;i<=n;++i)

for(int j=0;j<=max;++j)

}for(int i=0;i<=max;++i)

ans=(ans+f[n][i])%mod;

printf("%d

",ans);

return0;

}

狀壓DP 玉公尺田

農夫約翰的土地由m n個小方格組成,現在他要在土地裡種植玉公尺。非常遺憾,部分土地是不育的,無法種植。而且,相鄰的土地不能同時種植玉公尺,也就是說種植玉公尺的所有方格之間都不會有公共邊緣。現在給定土地的大小,請你求出共有多少種種植方法。土地上什麼都不種也算一種方法。輸入格式 第1行包含兩個整數m和n...

狀壓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 看著妥妥超時,但是裡面合法狀態很少 依舊可以過 在此,...

洛谷 1879 玉公尺田

題目描述 農場主john新買了一塊長方形的新牧場,這塊牧場被劃分成m行n列 1 m 12 1 n 12 每一格都是一塊正方形的土地。john打算在牧場上的某幾格里種上美味的草,供他的奶牛們享用。遺憾的是,有些土地相當貧瘠,不能用來種草。並且,奶牛們喜歡獨佔一塊草地的感覺,於是john不會選擇兩塊相鄰...