下午花了兩個小時把yali中學 陳丹琦的《基於連通性狀態壓縮的動態規劃問題》啃完,,,
插頭dp還真是個麻煩的東西。。。
相較sgu223算乙個水題了,
給定n*n的棋盤,擺放m個不相互攻擊的棋子,棋子攻擊範圍為相鄰8個位置。求方案數。
dp[i][j][k],第i行,狀態為j,放了k個棋子的方案數,dp[i][j][k] = sum(dp[i-1][jj][k - cnt(j)])
詳見**:
#include#includesgu223#include
#define ll long long
#define n 11
intn;
intm;
ll dp[
11][1024][111
];int cnt[1024
];int get_cnt(int
x)
return
res;
}bool check(int
x)bool calc(int x,int
y)int
main()
}dp[
0][0][0] = 1
;
for (int i=1; i<=n; i++)
for (int j=0; j<=(1
<1; j++)
if (cnt[j]>=0
) }}
}ll ans = 0
;
for (int j=0;j<=(1
<1;j++)
if (cnt[j]>=0
) printf(
"%i64d\n
",ans);
return0;
}
SGU 223 國王 狀壓DP
在 n n n n 的棋盤上放 k k k 個國王,國王可攻擊相鄰的 8 8 8 個格仔,求使它們無法互相攻擊的方案總數。n n 狀壓dp是一種比較暴力的dp。n n 首先dp i j k 表示前i行放置k個國王,且當前行狀態是j的方案數。n n 轉移方程 dp i j k dp i 1 m k s...
SGU 131 狀態壓縮dp
include include include include include include include include include include include include includeusing namespace std ifdef win32 define i64 int6...
力扣 223 場 周賽總結 並查集 狀態壓縮
1722.執行交換操作後的最小漢明距離 相似題目 1202.交換字串中的元素 1723.完成所有工作的最短時間 首先兩題剛拿到的時候思路都是正確的 3 的尋找連通區域和遍歷 和 4 的二分答案範圍來求解,總體難度感覺不高,但是還是沒有做出來。對於 3 對於並查集中的劃分連通區域不熟悉 利用map來處...