打卡第二天 - 洛谷P1855 - 2026 - 6 - 15
这是一道01背包的简单题目,顶多加上金钱和时间的双重约束,但是数量级很小,总的算下来是 O(N^3) 的复杂度,但是N只有 10^2 的数量级,所以最终也不是很大,也就 10^6 的数量级,完全能过
AC代码
#include <algorithm>
#include <iostream>
using namespace std;
const int M = 201;
int dp[M][M];
int main() {
// 这是双重限制的01背包
// 但是n太小了
int n, m, t;
cin >> n >> m >> t;
for (int i = 1; i <= n; i++) {
int mi, ti;
cin >> mi >> ti;
for (int j = m; j >= mi; j--) {
for (int k = t; k >= ti; k--) {
dp[j][k] = max(dp[j][k], dp[j - mi][k - ti] + 1);
}
}
}
cout << dp[m][t];
return 0;
}

浙公网安备 33010602011771号