1 条题解
-
0
01背包
多组数据,注意初始化。
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e3 + 5, M = 1e3 + 5, INF = 0x3f3f3f3f, MOD = 1E9 + 7; int n, m, v[N], w[N], f[M]; void solve() { cin >> n >> m; for (int i = 1; i <= n; i++) cin >> w[i]; for (int i = 1; i <= n; i++) cin >> v[i]; // DP // 1. 初始化 f[i][j]=0 memset(f, 0, sizeof f); for (int i = 1; i <= n; i++) // 阶段 for (int j = m; j >= v[i]; j--) f[j] = max(f[j], f[j - v[i]] + w[i]); // 目标 cout << f[m] << endl; } int main() { int T; cin >> T; while (T--) solve(); }
- 1
信息
- ID
- 1128
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 47
- 已通过
- 36
- 上传者