狀態壓縮 uva11795

2021-07-30 04:01:32 字數 411 閱讀 3412

題意:第一行資料總數

接下來輸入機械人個數

再一行告訴你人能殺死哪些機械人,

再n行告訴你機械人的**能怎麼互相殺死

思路:狀態壓縮+dp

偽轉移方程:dp【當前狀態】=sum,(其中i屬於[0,n])

批註比較多的**

#includeusing namespace std;

int attack[17];//每個機械人能殺死的其他所有機械人

int can_attack[1<<17];//殺死第i號機械人後得到的**可以殺死的所有其他機械人

long long dp[1<<17];

int t,n;

char s[17];

void pre()

}

uva11795 簡單狀態壓縮DP

一看到n 16就想到狀態壓縮dp了,而且只要儲存這個狀態就行了 轉移時也用狀態壓縮的轉移方法,比較兩個二進位制數,就能知道能否從已知狀態轉移到需要的狀態 開始沒看到題目給的就是二進位制數,自己還轉換成了二進位制 還有要記得用longlong 不能因為這個wa 還有位運算還不是很熟悉,可以用異或來去掉...

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...