題意:
乙個人做漢堡包,每個漢堡包有自己的花費和價值,某些漢堡包必須是在其他的某些漢堡包已經做好了的前提下才能製作,給你這個人的初始錢數,問最大的價值是多少。
思路:
比較簡單的乙個題目,首先我們開乙個陣列dp[i]表示i狀態(狀態壓縮)時的最大價值,把每乙個狀態都用這n個漢堡包更新一下,還的開個陣列money[i]表示的是i狀態是的剩餘錢數,更新的時候記住一點就是每個點只能用一次,也就是當前狀態裡如果有i這個點,那麼i不能在來更新了。
#include#includeintdp[1<<16];int
cost[20] ,vie[20];int
money[1<<16];int
limit[20][20];int
maxx(int
x,int
y)bool
ok(int
ii,int
now)intmain
()for
(
i=0;i<= (1<<n) -1;i++)dp[i] = -1000000000,money[i] =0;dp[0] =0,money[0] =m;int
ans=0;for(
i=0;i<= (1<<n) -1;i++)for(
j=1;j<=n;j++)}
printf("%d\n",ans);}return
0;}
Hdu 3811 狀態壓縮 DP
題意 給定數n n 17 求乙個n位數,每位可選1 n中的乙個,且每位不同,並且滿足給定的條件,求方案數。給定條件為m個 x y 表示第x位為y的滿足要求。滿足m中的乙個條件即正確。演算法 dp 狀態壓縮 分析 首先不考慮條件的總方案數為n 我們先算不滿足條件的方案,因為m個條件之間是或者 關係,有...
hdu 1074 狀態壓縮dp
題目描述 有 n 門課程的作業,每門都有完成期限d,與完成所需時間c,若超過期限,1天扣1分。問完成這n門作業至少要扣多少分,並輸出扣分最少的做作業順序。思路 dp i 記錄完成狀態為i的情況下的資訊。完成所需時間,上乙個狀態,最小扣分 狀態方程 dp i min dp j cost j,i 從j狀...
hdu1565 dp狀態壓縮
題意 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數。從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。解題思路 先找出所有能成立的狀態,即 i i 1 0,表示每一行都沒有相鄰的,然後遍歷if q j 1 再進行動態更新,用上...