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

(01背包 当容量特别大的时候) Knapsack problem (fzu 2214)

时间:2016-05-19 20:57:14      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

 

 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

技术分享 Source

第六届福建省大学生程序设计竞赛-重现赛(感谢承办方华侨大学)
 
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <map>
#include <vector>
#include <queue>
using namespace std;
typedef long long LL;
#define N 2600000
#define met(a, b) memset(a, b, sizeof(a))
#define INF 0x3f3f3f3f

int v[550], w[550];
int dp[N];

int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int i, j, n, B, Max=0, Index;

        scanf("%d%d", &n, &B);

        for(i=1; i<=n; i++)
        {
            scanf("%d%d", &w[i], &v[i]);
            Max += v[i];
        }

        for(i=0; i<=Max; i++)
            dp[i] = INF;
        dp[0] = 0;
        for(i=1; i<=n; i++)
        for(j=Max; j>=v[i]; j--)
        {
           dp[j] = min(dp[j], dp[j-v[i]]+w[i]);
        }

        for(i=0; i<=Max; i++)
            if(dp[i]<=B) Index = i;

        printf("%d\n", Index);

    }
    return 0;
}

 

(01背包 当容量特别大的时候) Knapsack problem (fzu 2214)

标签:

原文地址:http://www.cnblogs.com/YY56/p/5509864.html

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