专栏文章
题解:P13018 [GESP202506 七级] 调味平衡
P13018题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mip04urp
- 此快照首次捕获于
- 2025/12/03 03:59 3 个月前
- 此快照最后确认于
- 2025/12/03 03:59 3 个月前
题目传送门
思路
假设我们选取了 个物品,选取的第 个物品编号为 ,并且它们是“平衡”的,那么显然的性质:。那么我们就可以将 当做重量, 当做价值,进行 01 背包。由于可能有负数下标,使用 map 维护 dp 数组即可,注意转移细节。时间复杂度 ,其中 是值域,可理解为 , 是 map 贡献的,可以通过此题。
Code
CPP#include <bits/stdc++.h>
using namespace std;
#define il inline
#define pi pair<int, int>
#define mkp make_pair
const int N = 110, M = 5e4 + 10;
map<int, int> dp[N];
int v[N], w[N];
int main()
{
int n, a, b;
cin >> n;
dp[0][0] = 0;
for(int i = 1;i <= n;++i)
{
cin >> a >> b;
v[i] = a + b;
w[i] = a - b;
for(auto j : dp[i - 1])
{
dp[i][j.first] = max(dp[i][j.first], j.second);
dp[i][j.first + w[i]] = max(dp[i][j.first + w[i]], j.second + v[i]);
}
}
cout << dp[n][0];
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...