感覺有些差不多,因為CF比賽狀壓被虐 所以開始刷刷題,從最簡單的開始復習吧,細節處理很差,唉
DP方程跟一般的有些不一樣,dp[i][j]表示在狀態i的情況下 到第j行的擺放有多少種,然後總數就是 dp[i][n - 1]求和,以第一行為邊界往下推,第一行邊界值為1,因為從第一行開始當前狀態當然就一種擺法了,可是原圖本身就有些地方能放不能放的,一開始放在一起處理了很煩弄不清楚了,後來看了別人的,先處理掉原圖的合法不合法,看來我太年輕,這樣接下來就很清晰了,當然題目說 每一行都不放也是一種狀態,一開始給看漏了,結果一直案例跑錯,還以為推錯了,看方程看了半年
#define MOD 100000000 int n,m,cnt; int mp[15]; int aa[1<<15]; int dp[1<<15][15]; void init() { memset(mp,0,sizeof(mp)); memset(dp,0,sizeof(dp)); memset(aa,0,sizeof(aa)); } bool input() { while(scanf(%d %d,&n,&m) == 2) { for(int i=0;i