二维费用背包问题
宠物小精灵之收服
题解:设状态 表示从前 个物品中选择,物品的费用 为 ,费用 为 的最大选择数量。
则状态转移方程为:
跟普通01背包一样,第一维可以直接优化掉。
第一问的答案显然为 (注意本题中体力不能为0),第二问的答案枚举满足 的最大的 即为答案。
AC代码:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1010;
int dp[N][N];
int v[N], w[N];
void solve() {
int n, m, k;
cin >> n >> m >> k;
for (int i = 1; i <= k; i ++) {
cin >> v[i] >> w[i];
}
for (int i = 1; i <= k; i ++) {
for (int j = n; j >= v[i]; j --) {
for (int t = m - 1; t >= w[i]; t --) {
dp[j][t] = max(dp[j][t], dp[j - v[i]][t - w[i]] + 1);
}
}
}
int res = 1e9;
for (int i = 0; i < m; i ++) {
if(dp[n][i] == dp[n][m - 1]) {
res = min(res, i);
break;
}
}
cout << dp[n][m - 1] << " " << m - res << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
solve();
}
本文作者:弱弱的Ray
本文链接:https://www.cnblogs.com/Ray0430/p/18332398
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· autohue.js:让你的图片和背景融为一体,绝了!
· 10亿数据,如何做迁移?