狀壓dp基礎習題

2021-10-08 08:31:27 字數 2953 閱讀 8558

題解非常基礎的一道狀壓dp

我們用二進位制來表示每一行取數情況,1

11表示取,0

00表示不取

很容易得到狀態轉移方程:

f [i

][j]

=max

(f[i

][j]

,f[i

−1][

k]+a

ns[i

][j]

);f[i][j]=max(f[i][j],f[i-1][k]+ans[i][j]);

f[i][j

]=ma

x(f[

i][j

],f[

i−1]

[k]+

ans[

i][j

]);當且僅當j

jj&k==

0k==0

k==0

時**

#include

#define m 150009

using

namespace std;

intread()

for(

;isdigit

(ch)

;ch=

getchar()

) re=

(re<<3)

+(re<<1)

+ch-

'0';

return re*f;

}int f[25]

[m],ans[25]

[m],a[25]

[25],cnt,maxn,c[m]

,n,s[25]

;void

clear()

signed

main()

}}for(

int i=

1;i<=n;i++)}

}printf

("%d\n"

,maxn);}

return0;

}

題解

顯然直接bfs是不行的

那麼我們用二進位制來表示是否具有該鑰匙的狀態,每到乙個地方更新狀態即可

**細節較多

**

#include

#define m 1509

using

namespace std;

intread()

for(

;isdigit

(ch)

;ch=

getchar()

) re=

(re<<3)

+(re<<1)

+ch-

'0';

return re*f;

}int dx[4]

=;int dy[4]

=;int n,m,t,ans;

bool vis[21]

[21][m]

;char mp[49]

[49],s[40]

;struct pointst;

bool

check

(int x,

int y)

void

bfs(

)for

(int i=

0;i<

4;i++)}

else

if(mp[nxt.x]

[nxt.y]

>=

'a'&&mp[nxt.x]

[nxt.y]

<=

'z')

}else}}

}}ans=-1

;return;}

signed

main()

}bfs()

,printf

("%d\n"

,ans);}

return0;

}

題解

一道經典的狀壓dp,細節較多

**

#include

#define int long long

using

namespace std;

int n,m,s[

100]

,ma[

109]

,num[

100]

,cnt,dp[

101]

[101][

110]

;int

read()

for(

;isdigit

(ch)

;ch=

getchar()

) re=

(re<<3)

+(re<<1)

+ch-

'0';

return re*f;

}boolpd(

int x)

intnum_one

(int x)

return sum;

}void

init()

}bool

zjf(

int x,

int y)

intsolve()

for(

int i=

2;i<=n;i++

)for

(int j=

0;j(zjf

(ma[i]

,s[j]))

for(

int k=

0;k(zjf

(ma[i-1]

,s[k])&&

(s[j]

&s[k])==

0)return ans;

}signed

main()

init()

; cout<<

solve()

<

return0;

}}

習題 國王(狀壓DP)

題目 記憶體限制 64 mib時間限制 500 ms標準輸入輸出 題目型別 傳統評測方式 文字比較 提交提交記錄 返回比賽 題目描述 原題來自 sgu 223 在 n n的棋盤上放k 個國王,國王可攻擊相鄰的 8個格仔,求使它們無法互相攻擊的方案總數。輸入格式 只有一行,包含兩個整數 n 和k 輸出...

狀壓dp(基礎)

題目大意 有乙個m n的矩陣 每乙個方格就是一塊牧場 每乙個牧場適合種玉公尺用1表示 不適合用0表示,放牧時相鄰的兩塊玉公尺地只能有一頭牛 求有多少種放牧方案 一頭牛也不放也是一種 資料範圍 1 m 12 1 n 12 輸入 第一行 n,m,接下來是 m n的矩陣 1表示適合種玉公尺 0表示不適合 ...

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