打卡第二天 - 洛谷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;
}

posted @ 2026-06-15 23:41  AsaltFish11  阅读(4)  评论(0)    收藏  举报