专题三 · 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的主要内容,如果未能解决你的问题,请参考以下文章