码迷,mamicode.com
首页 > 其他好文 > 详细

背包问题---DP

时间:2016-08-22 09:33:00      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

 Problem 2214 Knapsack problem

Accept: 412    Submit: 1650
Time Limit: 3000 mSec    Memory Limit : 32768 KB

技术分享 Problem Description

Given a set of n items, each with a weight w[i] and a value v[i], determine a way to choose the items into a knapsack so that the total weight is less than or equal to a given limit B and the total value is as large as possible. Find the maximum total value. (Note that each item can be only chosen once).

技术分享 Input

The first line contains the integer T indicating to the number of test cases.

For each test case, the first line contains the integers n and B.

Following n lines provide the information of each item.

The i-th line contains the weight w[i] and the value v[i] of the i-th item respectively.

1 <= number of test cases <= 100

1 <= n <= 500

1 <= B, w[i] <= 1000000000

1 <= v[1]+v[2]+...+v[n] <= 5000

All the inputs are integers.

技术分享 Output

For each test case, output the maximum value.

技术分享 Sample Input

1
5 15
12 4
2 2
1 1
4 10
1 2

技术分享 Sample Output

15
 
代码如下:
/*
    0-1背包问题:
    因为重量太大,肯定不能按照原来的标准模型套用,开不了那么大的数组
    但是总价值却小于5000;

    根据价值构造dp方程,找到最小的重量能够得到这个价值
    dp[100]=15,就是代表使得价值为100的最小重量为15;
*/


#include <iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxs = 600;
int n,B;
int w[maxs];
int v[maxs];
int dp[5005];
int main()
{
    freopen("in.txt","r",stdin);
    int T;
    cin>>T;
    while(T--)
    {
        int sum = 0;
        scanf("%d%d\n",&n,&B);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&w[i],&v[i]),sum+=v[i];
        memset(dp,0x3f,sizeof(dp));
        dp[0]=0;
        for(int i=n;i>=1;i--)
            for(int j=sum;j>=v[i];j--)
                dp[j]=min(dp[j],dp[j-v[i]]+w[i]);
        for(int i=sum;i>=0;i--)
            if(dp[i]<=B)
            {
                printf("%d\n",i);
                break;
            }

    }
    return 0;
}

 

背包问题---DP

标签:

原文地址:http://www.cnblogs.com/wt20/p/5794355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!