nyoj311 完全揹包 完全揹包

2021-08-26 15:28:21 字數 2009 閱讀 4838

完全揹包

時間限制:3500 ms | 記憶體限制:65535 kb

難度:4

描述 直接說題意,完全揹包定義有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的體積是c,價值是w。求解將哪些物品裝入揹包可使這些物品的體積總和不超過揹包容量,且價值總和最大。本題要求是揹包恰好裝滿揹包時,求出最大價值總和是多少。如果不能恰好裝滿揹包,輸出no

輸入 第一行: n 表示有多少組測試資料(n<7)。

接下來每組測試資料的第一行有兩個整數m,v。 m表示物品種類的數目,v表示揹包的總容量。( 0 < m<=2000,0 < v <=50000)

接下來的m行每行有兩個整數c,w分別表示每種物品的重量和價值(0 < c <100000,0 < w < 100000)

輸出 對應每組測試資料輸出結果(如果能恰好裝滿揹包,輸出裝滿揹包時揹包內物品的最大價值總和。 如果不能恰好裝滿揹包,輸出no)

樣例輸入

2 1 5

2 2

2 5

2 2

5 1

樣例輸出

no 1

思路:

要求揹包完全裝滿時的最大價值,初始化時給dp[1]~dp[v]設負無窮,dp[0]設0。

比如m = 1, v = 5, w = 2, c = 2時,

dp[0] = 0

dp[1] = -inf

dp[2] = max(dp[2], dp[0] + c) = dp[0] + c = 2

dp[3] = max(dp[3], dp[3-w] + c) = dp[1] + 2 = -inf + 2 = -inf

dp[4] = max(dp[4], dp[4-2] + c) = dp[2] + 2 = 4

dp[5] = max(dp[5], dp[5-2] + c) = dp[3] + 2 = -inf + 2 = -inf

**:

#include 

#include

#include

#include

using

namespace

std;

#define inf 0x3f3f3f3f

const

int maxv = 50010;

const

int maxn = 2010;

int dp[maxv];

int w[maxn], v[maxn];

int main()

fill(dp, dp + maxv, -inf);

dp[0] = 0;

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

}if(dp[v] < 0) printf("no\n");

else

printf("%d\n", dp[v]);

}return

0;}

錯誤**感受一下…. 哭o(╥﹏╥)o…

#include 

#include

#include

#include

using

namespace

std;

#define inf 0x3f3f3f3f

const

int maxv = 50010;

const

int maxn = 2010;

int dp[maxv];

int w[maxn], c[maxn];

int main()

fill(dp, dp + maxv, -inf);

dp[0] = 0;

for(int i = 1; i <= m; ++i)}}

if(dp[v] < 0) cout

<< "no"

<< endl;

else

cout

<< dp[v] << endl;

}return

0;}

NYOJ 311 完全揹包 完全揹包模型

時間限制 3500 ms 記憶體限制 65535 kb 難度 4描述 直接說題意,完全揹包定義 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的體積是c,價值是w。求解將哪些物品裝入揹包可使這些物品的體積總和不超過揹包容量,且價值總和最大。本題要求是揹包 恰好裝滿揹包時,求出最大...

完全揹包 nyoj 311

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 直接說題意,完全揹包定義有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的體積是c,價值是w。求解將哪些物品裝入揹包可使這些物品的體積總和不超過揹包容量,且價值總和最大。本題要求是揹包恰好裝滿揹包時,求出最大價...

NYOJ 311 完全揹包

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 直接說題意,完全揹包定義有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的體積是c,價值是w。求解將哪些物品裝入揹包可使這些物品的體積總和不超過揹包容量,且價值總和最大。本題要求是揹包恰好裝滿揹包時,求出最大價...