01背包 f[i][j] = max(f[i-1][j], f[i-1][j-v[i]] + w[i]
完全背包 f[i][j] = max(f[i-1][j], f[i][j-v[i]] + w[i]
多重背包 f[i][j] = max(f[i-1][j], f[i-1][j-v[i]]+w[i], f[i-2][j-2v[i]]+2w[i], …)
多重背包二进制优化后,可以变成多个01背包问题求解
混合背包问题
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int n, m, v, w, s;
int f[N];
int main()
{
cin