題意:第一行資料總數
接下來輸入機械人個數
再一行告訴你人能殺死哪些機械人,
再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...