链接:http://acm.ocrosoft.com/problem.php?cid=2001&pid=5
题目描述
现有N个物品,第i个物品有两个属性A_i和B_i。在其中选取若干个物品,使得sum{A_i + B_i}最大,同时sum{A_i},sum{B_i}均非负(sum{}表示求和)。
输入
第一行,一个整数,表示物品个数N。 接下来N行,每行两个整数,表示A_i和B_i。
输出
一个整数,表示最大的sum{A_i + B_i}。
样例输入
5 -5 7 8 -6 6 -3 2 1 -8 -5
样例输出
8
提示
N < = 100 , |A_i| < = 1000 , |B_i| < = 1000
思路:
枚举a_i,dpb_i,
状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i].x]+a[i].y);
题解:
#include<bits/stdc++.h>
using namespace std;
int n,dp[102][200002],sum=-1e9+7;//sum记录最终答案
struct node{
int x,y;
}a[102];
int main()
{
//之所以以100000和200000为界值,是因为数据范围是正负100*

这是一个关于选择物品以最大化A_i + B_i之和的问题,同时保持A_i和B_i的和非负。给定N个物品,每个物品有两个属性A_i和B_i,目标是找出能获得的最大总和。题目限制了物品数量N和A_i、B_i的绝对值不超过1000。解题思路涉及枚举和动态规划,状态转移方程为dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i].x]+a[i].y)。"
92875505,8256631,Kiwi_Syslog日志服务器搭建与配置指南,"['syslog', '网络管理', '服务器配置', '日志收集', '监控']
最低0.47元/天 解锁文章
947

被折叠的 条评论
为什么被折叠?



