zoj3755 狀態壓縮dp

2021-06-22 20:35:45 字數 677 閱讀 3577

很久沒有1a了~爽~

題目也是很常規的狀態壓縮題目,這類題目一般都是預處理所有狀態,然後通過列舉,判斷是否符合要求,再從符合要求的末狀態中找到答案即可。

這個題目,由於給定的是所有偶數列,那麼,可以想到,每一列只跟左右兩列有關,其他列對其沒有影響。因此,只需要確定了兩列中的一列的狀態,另外一列便可以列舉狀態判斷是否符合題意。從左至右,列舉第一列的所有狀態,第二列是數字列,列舉第三列狀態,符合題意就記錄。依次類推,從末狀態中得到最終解即可。

**:#include #include #include using namespace std;

int n,m;

int map[15][15];

int status[2100];

int dp[15][2100];

int getnum(int i)

return s;

}int getss(int i,int t)

int main()

{ while (cin>>n>>m)

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

for (int t=1;t<=m;t++)

cin>>map[i][t];

memset(dp,-1,sizeof(dp));

int cnt=(1<<(n+1));

for (int i=0;i

zoj 3471 狀態壓縮dp

題目大意 不超過10種氣體,兩兩之間相互碰撞可以產生一定的能量,如a碰b,那麼b氣體就消失,自身不能碰自身,問最後所能得到的最大能量。題目解析 用10位二進位制表示氣體是否存在,0表示存在,1表示不存在,s 上乙個狀態 中的兩種氣體碰撞並且有一種消失,可以得到news的狀態 狀態轉移 狀態表示 dp...

ZOJ 3802 (狀態壓縮dp)

首先,最樸素的思想為暴搜所有解o 2 n 不可接受 已d i j 代表前 i 個數字 裡 已作出選擇後產生的序列記為 j j 最大為 16,8,4,2全部除以壓縮一下 4000 注意 j 儲存的是乙個序列經產生所屬運算後最後的遞減數數列 舉個栗子 14 8 4 2 當添入 2 變為 16,添入 4 ...

ZOJ2563 之狀態壓縮dp

long dominoes time limit 2 seconds memory limit 65536 kb find the number of ways to tile an m n rectangle with long dominoes 3 1 rectangles.each domin...