插頭dp模板

2022-04-30 00:00:08 字數 1127 閱讀 4337

ural 1519

陳丹琦《基於連通性狀態壓縮的動態規劃問題》中的例題

給出\(n*m\)的方格,有些格仔不能鋪線,其它格仔必須鋪,形成乙個閉合迴路。問有多少種鋪法?

第\(1\)行,\(n,m(2\le n,m\le 12)\)

從第\(2\)行到第\(n+1\)行,每行一段字串(\(m\)個字元),*表不能鋪線,.表必須鋪

輸出乙個整數,表示總方案數

插頭\(dp\)模板

幾個關鍵字:hash掛鏈,討論,自己畫圖

幾個細節:掛鏈別掛錯了,好好討論,有些地方判是為了剪枝,**風格

幾個質數:590027,299989,299987

code:

#include #include #define ll long long

const int n=3e5+10;

const int mod=299989;

int head[n],next[n],to[n],sta[2][n],cnt[2],tot;

int n,m,ma[15][15],cur,bit[26],endx,endy;

ll dp[2][n],ans;

void ins(int s,ll val)

dp[cur][++cnt[cur]]=val;

sta[cur][cnt[cur]]=s;

to[++tot]=cnt[cur];

next[tot]=head[x];

head[x]=tot;

}void dp()

else if(!sd&&!sr)

{if(ma[i+1][j]&&ma[i][j+1])

ins(lassta+(1<>bit[k-1])&3)==1) ++ct;

if(((lassta>>bit[k-1])&3)==2) --ct;

if(!ct)

{ins(lassta-(sr<>bit[k-1])&3)==1) --ct;

if(((lassta>>bit[k-1])&3)==2) ++ct;

if(!ct)

{ins(lassta-(sr<2018.12.20

插頭dp的幾個模板

ural1519 求經過所有可行點的哈密頓迴路的個數 括號匹配法,轉移有點複雜,但是時間空間比較小 include include include include include include include include define ll long long using namespace ...

插頭dp的幾個模板

ural1519 求經過全部可行點的哈密頓迴路的個數 括號匹配法,轉移有點複雜,可是時間空間比較小 include include include include include include include include define ll long long using namespace ...

P5056 模板 插頭dp

插頭dp的模板 插頭dp括號序列的方法其實就是利用迴路不能交叉匹配,必定兩兩配對的性質通過括號序列描述了連通塊的匹配關係 注意分類討論 判斷狀態合法 最邊上一圈不能有插頭延伸過去,要注意 include include include define int long long using names...