二维背包
樱果运算
https://ac.nowcoder.com/acm/contest/37160/J
因为每次给的要啦的货是变量 体积1是几辆车 体积2是多少钱 当给出多个价钱和 只要输出对应f[][]载货量 就可以
#include <iostream>
using namespace std;
const int N = 110, M = 1010;
int dp[N][M]; // N辆车M元最多载多少货
int e[N], t[N];
int n, m;
int x, y;
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> e[i] >> t[i];
}
for (int i = 1; i <= n; i++) // 第i辆车
{
for (int j = i; j >= 1; j--)
{
for (int k = M - 1; k >= e[i]; k--)//枚举的k要大于体积才有用
{
dp[j][k] = max(dp[j][k], dp[j - 1][k - e[i]] + t[i]);
}
}
}
for (int i = 1; i <= m; i++)
{
cin >> x >> y;
int res = -1;
for (int j = 1; j <= n; j++)
{
if (dp[j][x] >= y)
{
res = j;
break;
}
}
cout << res << endl;
}
return 0;
}