POJ 2288(狀態壓縮經典(巨坑)例題)

2021-10-05 10:41:25 字數 1213 閱讀 3519

寫了一天,還是wa,後來看了大佬的題解,貼一下鏈結

#include

#include

#include

//poj不能用 #include

using

namespace std;

const

int maxn=14;

typedef

long

long ll;

int v[maxn]

;//點權值

ll dp[

1<[maxn]

[maxn]

;ll num[

1<[maxn]

[maxn]

;//注意方案數可能會爆int

bool p[maxn]

[maxn]

;//判斷是否連通

int n,m;

long

long ans,sum,rr;

int t;

inline

void

init()

intmain()

for(

int i=

1,f,t;i<=m;i++)if

(n==1)

for(

int i=

0;i)//預處理邊界值

for(

int j=

0;j//三維的狀態壓縮

long

long jd=

1

for(

int k=

0;k)for

(int i=

0;i)for

(int j=

0;j)else

if(dp[k]

[i][j]

==cal)}}

}}rr=0;

ans=-1

;for

(int i=

0;i)for

(int j=

0;j(i!=j)

else

if(ans==dp[jd-1]

[i][j]

) rr+

=1ll

*num[jd-1]

[i][j]

;//cout<}

if(ans==-1

)else cout<' '<2

}}

POJ 2288 狀壓dp Hamilton迴路

題意 hamilton迴路的權值為 1 經過的每條邊的兩個點的點權和 2 連續經過兩點的乘積 3 如果三條邊形成三角形則再加上三個點權的乘積 求最大值 路徑條數 思路 10來個點用乙個小的鄰接矩陣就可以判斷是否相連,判斷三角形就可以在dp加一維記錄前兩個點的資訊,列舉的時候多列舉到前2個點 即dp ...

POJ 1324(A 狀態壓縮)

真是好題啊,各種tle之後看了人家的解題報告才a的 1 一開始用deque儲存狀態資訊,用queue進行bfs,tle 2 試圖用陣列儲存狀態資訊,自己寫佇列進行bfs,還是tle 3 由於row和col都小於20,試圖用5 2個bit表示乙個位置,還是tle 終於看了discuss,找到了大牛的解...

1185 POJ 狀態壓縮

這道題寫的我直 寫了6遍,不知道 錯了,然後按照題解,一點一點寫下來,跪哭了,太渣了 ps include include include include include include include include include include include define ll int64 ...