(多重背包)模板题

题目描述

这一天蓝桥杯建个机房,以后国赛用,因为蓝桥杯很有钱。

给了无限预算。但是由于运力有限,所以买的电脑总体积要小于等于V。

因为合作的运输公司NB,所以只需要考虑体积而不用考虑形状。

市面上有n种电脑,每种电脑,一台的体积为t,价钱为w。

因为蓝桥杯又抠门题又坑,你决定算出最多能花掉多少钱,不买最好只买最贵。

输入描述:

第一行两个整数1<=n<=1000,1<=v<=1000
第二至n+2行有两个整数1<=t<=1000,1<=w<=1000

输出描述:

输出一个数字代表花掉的钱

示例1

输入

复制5 6 1 2 2 4 3 4 4 5 5 6

5 6             
1 2
2 4
3 4
4 5 
5 6

输出

复制12

12

代码

#include <iostream>
#include <algorithm>
using namespace std;
 
int t[1001];
int w[1001];
int solve[1000001];
 
int main(void)
{
    int n, v;
    cin >> n >> v;
     
    for(int i = 1; i <= n; i++)
    {
        cin >> t[i] >> w[i];
    }
    for(int i = 1; i <= n; i++)
    {
        for(int j = t[i]; j <= v; j++)
        {
            solve[j] = max(solve[j], solve[j - t[i]] + w[i]);
        }
    }
    cout << solve[v];
     
    return 0;
}

上一篇:【Python】hashlib模块 MD5加密


下一篇:ALGO-1001 跳马