一道非常巧(e)妙(xin)的分層揹包dp題
最後吸氧強行過(發現大部分人都是這樣過的...)
解析不想寫了,看這篇吧<
#include #include #include using namespace std;
#define ll long long
int n,m,w,v;
long long f[35][1005];
ll mymax(ll x,ll y)
ll mymin(ll x,ll y)
for(int j=1000;j>=w;j--)
f[cnt][j]=mymax(f[cnt][j],f[cnt][j-w]+v);
}int top=0,x=m;
while(x!=0)top--;
for(int i=1;i<=top;i++)//第0層不需要從上一層轉移
}printf("%lld\n",f[top][1]);
}return 0;
}
bzoj1190夢幻島寶珠
給你n顆寶石,每顆寶石都有重量和價值。要你從這些寶石中選取一些寶石,保證總重量不超過w,且總價值最大為,並輸出最大的總價值。資料範圍 n 100 w 2 30,並且保證每顆寶石的重量符合a 2 b a 10 b 30 輸入檔案中包含多組資料。每組資料的格式如下 第一行是兩個正整數n和w,1 n 10...
HNOI2007 夢幻島寶珠
題目 題意簡潔明瞭,就是做乙個01揹包,但是揹包的容量 w 非常大,並且給出的物品的體積都能表示成 a times 2 b,a leq 10,b leq 30 顯然這個 a 拿來做揹包的體積非常合適,於是我們按照 b 分類,設 dp 表示只使用 a times 2 i 形式的物品,湊出 j time...
HNOI2007 夢幻島寶珠
題解 一道比較好的題目 首先比較顯然的就是我們要按照a 2 b的b的順序來列舉 那麼狀態f i j 表示當前在b,用了a 2 b 剛開始沒想到怎麼不同層之間搞 看了題解發現非常簡單 由於每一層到最後一層有用的二進位制位至少時從自己的二進位制位開始 所以我們可以捨棄那些沒用的二進位制位 maxa f ...