大佬求助!!,用vector容器过不了第五个测试点

P1757 通天之分组背包

我知道了... 因为我k那个for循环的条件不行,应该把“j >= b[k].first”放在循环里面。 --- AC代码: ```cpp #include <bits/stdc++.h> using namespace std; int dp[10001]; void solve() { int m, n; cin >> m >> n; int s = 0; vector<vector<pair<int, int>>> group(101); for (int i = 1; i <= n; i++) { int a, b, c; cin >> a >> b >> c; s = max(s, c); group[c].emplace_back(a, b); } for (int i = 1; i <= s; i++) { for (int j = m; j >= 0; j--) { vector<pair<int, int>> b = group[i]; for (int k = 0; k < group[i].size(); k++) { if (j >= b[k].first) dp[j] = max(dp[j], dp[j-b[k].first]+b[k].second); } } } cout << dp[m] << endl; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); solve(); } ```
by Pjkang @ 2023-07-19 18:18:04


|