CSU 1086 超市購物

2021-07-11 05:44:07 字數 1313 閱讀 6861

time limit: 1 sec  

memory limit: 128 mb

submit: 361  

solved: 151 [

submit][

status][

web board]

上次去超市掃蕩回來的東西用完了,staginner又得跑超市一趟,出發前他列了一張購物清單,打算去買k種不同的商品,每種買一件。到了超市,staginner發現每種商品有n個品牌,每個品牌此商品的**為vi,對staginner的作用值為wi,他會從這n個品牌裡面挑乙個品牌買。這時,staginner突然想起出門時只帶了m元錢,又懶得去取錢了,所以不一定能買完k種商品,只好盡可能地讓買的東西對自己的總作用值ans最大。

多組樣例。

第一行兩個整數k,m代表staginner想買的不同種類商品的數目和他帶的錢 (0 < k <= 30, 0 < m <= 2000)

以下輸入分為k個部分,代表k種商品。

每個部分第一行為乙個數字n,代表第k種商品的n個品牌,n不大於10。之後跟著n行,每行兩個數字,代表物品的**vi和作用值wi。其中 0 < vi < m。

輸出case #: 最大總作用值,每兩個樣例之間有乙個空行。

3 100

350 600

20 700

30 800

230 500

40 600

160 200

2 500

2200 1000

260 1200

1280 300

case 1: 1400

case 2: 1300

hint

分組揹包問題

#include #include #include using namespace std;

const int maxn=35;

const int maxm=2005;

int weight[maxn][maxn],value[maxn][maxn];

int dp[maxm];

int main()

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

for(int j=m;j>=0;j--)

for(int p=1;p<=weight[i][0];p++)

if(weight[i][p]<=j)

dp[j]=max(dp[j],dp[j-weight[i][p]]+value[i][p]);

printf("case %d: %d\n\n",c++,dp[m]);

}return 0;

}

CSU 1086 超市購物 分組揹包問題

time limit 1 sec memory limit 128 mb submit 21 solved 10 submit status 上次去超市掃蕩回來的東西用完了,staginner又得跑超市一趟,出發前他列了一張購物清單,打算去買k種不同的商品,每種買一件。到了超市,staginner發...

COJ 1086 超市購物 (揹包問題)

上次去超市掃蕩回來的東西用完了,staginner又得跑超市一趟,出發前他列了一張購物清單,打算去買k種不同的商品,每種買一件。到了超市,staginner發現每種商品有n個品牌,每個品牌此商品的 為vi,對staginner的作用值為wi,他會從這n個品牌裡面挑乙個品牌買。這時,staginner...

超市購物設計

package duixiang3 超市購物設計 public class example05 class product public void setproname string proname public string getproname class market public void ...