本文主要是介绍题目:背包与魔法(蓝桥OJ 2223),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
解题思路:
01背包拓展。
题解:
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e4 + 9;
ll dp[N][2];int main()
{int n, m, k;cin >> n >> m >> k;for(int i = 1; i <= n; i++){int w, v;cin >> w >> v;for(int j = m; j >= 0; j--){if(j >= w){dp[j][0] = max(dp[j][0], dp[j - w][0] + v);dp[j][1] = max(dp[j][1], dp[j - w][1] + v);}if(j >= w +k){dp[j][1] = max(dp[j][1], dp[j - w - k][0] + 2 * v);}}}cout << max(dp[m][0], dp[m][1]) << '\n';return 0;
}
知识点:01背包,动态规划
这篇关于题目:背包与魔法(蓝桥OJ 2223)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!