专题三 · 1017

Posted suamfadmp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了专题三 · 1017相关的知识,希望对你有一定的参考价值。

代码及解释

#include <iostream>
#include <string.h>
#include <algorithm>

// 01背包问题(竟然吃了个 PE ……)
// 方程是 f[j] = max(f[j], f[j - w[i]] + v[i])

const int SIZE = 1010;
int w[SIZE];
int v[SIZE];
int f[SIZE];

int main() 
    int t;
    std::cin >> t;

    while (t--) 
        memset(w, 0, sizeof(w));
        memset(v, 0, sizeof(v));
        memset(f, 0, sizeof(f));

        int n, m;
        std::cin >> n >> m;

        for (int i = 1; i <= n; i++)
            std::cin >> v[i];

        for (int i = 1; i <= n; i++)
            std::cin >> w[i];


        for (int i = 1; i <= n; i++)
            for (int j = m; j >= 0; j--)
                if (j >= w[i])
                    f[j] = std::max(f[j], f[j - w[i]] + v[i]);

        std::cout << f[m] << std::endl;
    
    return 0;


以上是关于专题三 · 1017的主要内容,如果未能解决你的问题,请参考以下文章

Dancing Links 专题总结

Google Play 专题图下载

Dancing Link专题

专题三 · 1014

专题三 · 1006

专题三-动态规划算法总结