uva11795 簡單狀態壓縮DP

2021-07-11 02:07:29 字數 624 閱讀 4732

一看到n = 16就想到狀態壓縮dp了,而且只要儲存這個狀態就行了

轉移時也用狀態壓縮的轉移方法,比較兩個二進位制數,就能知道能否從已知狀態轉移到需要的狀態

開始沒看到題目給的就是二進位制數,自己還轉換成了二進位制

還有要記得用longlong……不能因為這個wa

還有位運算還不是很熟悉,可以用異或來去掉某一位數 s ^ (1<

#include#include#include#includeusing namespace std;

const int maxn = 20;

int n;

char gra[maxn][maxn];

int gra_bi[maxn];

long long dp[1<> t;

for(int k = 1; k <= t; k++)

for(int i = 1; i <= n; i++)

memset(dp,-1,sizeof(dp));

dp[1] = 1;

printf("case %d: %lld\n",k,d((1 << (n + 1)) - 1)) ;//總共有n+1個1,

} return 0;

}

狀態壓縮 uva11795

題意 第一行資料總數 接下來輸入機械人個數 再一行告訴你人能殺死哪些機械人,再n行告訴你機械人的 能怎麼互相殺死 思路 狀態壓縮 dp 偽轉移方程 dp 當前狀態 sum,其中i屬於 0,n 批註比較多的 includeusing namespace std int attack 17 每個機械人能...

uva 11795洛克人的難題(集合dp)

題意 給定乙個初始 可以消滅編號1 i的人 每消滅乙個機械人,獲得其 求總共可以有多少種方法消滅所有的機械人。思路很簡單,集合的動態規劃,但要注意的是,由於16!會爆int,所以ans要用ll型別,之前一直wa就是因為沒注意這個問題.上碼 include include include includ...

UVa 10944 狀態壓縮DP

第一道狀態壓縮dp題,感覺要好好學習這種思維方式 首先設l的位置為 pointx 0 pointy 0 其他節點的位置為 pointx i pointy i 然後求出各個節點之間的距離dis i j max 我們用乙個n位2進製數 bn 1,b0 表示堅果收集情況的組合狀態 其中bi 0表示第i 1...