SGU 131 狀態壓縮dp

2021-06-05 11:20:20 字數 1420 閱讀 3801

#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#ifdef _win32

#define i64 __int64

#define out64 "%i64d\n"

#define in64 "%i64d"

#else

#define i64 long long

#define out64 "%lld\n"

#define in64 "%lld"

#endif

#define for(i,a,b) for( int i = (a) ; i <= (b) ; i ++)

#define ff(i,a) for( int i = 0 ; i < (a) ; i ++)

#define ffd(i,a) for( int i = (a)-1 ; i >= 0 ; i --)

#define s64(a) scanf(in64,&a)

#define ss(a) scanf("%d",&a)

#define ll(a) ((a)<<1)

#define rr(a) (((a)<<1)+1)

#define sz(a) ((int)a.size())

#define pp(n,m,a) puts("---");ff(i,n)

#define pb push_back

#define cl(q) while(!q.empty())q.pop()

#define mm(name,what) memset(name,what,sizeof(name))

#define read freopen("in.txt","r",stdin)

#define write freopen("out.txt","w",stdout)

const int inf = 0x3f3f3f3f;

const i64 inf64 = 0x3f3f3f3f3f3f3f3fll;

const double oo = 10e9;

const double eps = 10e-10;

const double pi = acos(-1.0);

const int maxn = 9;

const int maxc = 12;

i64 dp[maxc][1<>n>>m)

return 0;

}

SGU 131 狀壓壓縮 dp

題意 乙個n m的矩陣,求用i型 1 2 和l型的兩種方塊進行填滿有多少種方法 方法 這題和poj2411有點類似 做過方塊填充的應該都認得出來要用狀壓 但是要比poj2411複雜 思路也是類似 不過因為要考慮l型 情況也複雜的多 語文有點不太好 可能有點說不清楚 利用兩個引數 b1 表示前面的放置...

SGU223 狀態壓縮

下午花了兩個小時把yali中學 陳丹琦的 基於連通性狀態壓縮的動態規劃問題 啃完,插頭dp還真是個麻煩的東西。相較sgu223算乙個水題了,給定n n的棋盤,擺放m個不相互攻擊的棋子,棋子攻擊範圍為相鄰8個位置。求方案數。dp i j k 第i行,狀態為j,放了k個棋子的方案數,dp i j k s...

狀態壓縮DP

首先,我們以一道狀壓經典題tsp來引入。tsp問題 一張圖上有n個點,給定相應的鄰接矩陣,需要求出從0號節點出發,經過且只經過每個頂點一次,最後仍回到0號節點的最小邊權。思路 假設現在已訪問過的頂點集合 起點0當作還未訪問過的頂點 為s,當前所在頂點為v,用dp s v 表示從v出發訪問剩餘的所有頂...