題目:
假設有5列,那麼每一列用乙個數來填充,最大是99999,最小是00000.
由於m<=6,所以最大狀態是999999,可以直接從0開始列舉,到999999複雜度為1e6。
dp[sta][cur] 表示當狀態為sta時的方案數,由於當前狀態由前乙個狀態轉移過來,所以cur只需要0或1就行。
思路和普通的二進位制表示的輪廓線dp類似。
**:
#include using namespace std;
const int maxn=1e6+7;
typedef long long ll;
const int mod=1e9+7;
ll dp[maxn][2];
char s[10][10];
int isp[21] = ;
int main()
int sta=1;
for(int i=0;i
dp[0][0]=1;
int cur=0;
for(int i=0;i
for(int k=0;k}}
}}ll ans=0;
for(int i=0;i
printf("%lld\n",ans);
return 0;
}
輪廓線DP 專項
題意 n m n mn m n,m 11 的矩陣,填1 2 1 21 2或2 12 1 2 1方塊,求方案數 解析 以前寫過狀壓的做法,直接一行一行維護,現在寫輪廓線的做法 注意 當前填紅點的意思是,以紅點作為方塊的右下角 因為方塊長度為2,所以對紅點位置有三種操作 向上填 為了使所有方塊填滿,如果...
插頭DP 輪廓線DP
題解 p5056 模板 插頭dp gnaq uparrow 學習資料,大部分賀的,有一些些的改動與自己的補充 插頭 dp 是一類用狀壓 dp 來處理連通性問題的 dp 方法。常見的型別 棋盤插頭 dp 連通性問題 迴路問題,路徑問題,生成樹問題等 插頭 dp 本質上式狀壓 dp!一般設 dp i,s...
group 狀壓dp,輪廓線
神仙題。但是難得的傻孩子cbx沒有喊題解,所以也就難得的自己想出來了乙個如此神仙的題。如果是自己想的,說它神仙是不是有點不合適啊。反正的確不好像。關鍵就在於這個標籤。頹完標籤就差不多會了。cbx那麼快就想出來了。2個小時?廢話多了。先考慮暴力。對於16的資料範圍當然要考慮狀壓,狀態表示每乙個位置是否...