洛谷P1802 5 倍经验日(01背包裸题)

这篇博客介绍了一个利用动态规划求解01背包问题的C++代码实现。题目中,每个物品有一定的价值和重量,目标是找到能放入背包且总重量不超过限制的最大价值。博主通过预处理并优化了数据,提高了算法效率。最后输出了最大价值的五倍,以确保结果为整数。
摘要由CSDN通过智能技术生成

题面如下:机票
在这里插入图片描述
抽象出来就是个01背包裸题,选择当前需要的花费就是药水,然后对应增加价值,我提前预处理失败的可获得经验直接加,然后对应的赢获得的价值就是b-a。

#include<bits/stdc++.h>

using namespace std;

const int maxn=1e4;
long long  v[maxn],w[maxn],dp[maxn];

int main()
{
    long long ans=0;
    int n,x,i,j,t;
    cin>>n>>x;
    for(i=0;i<n;i++)
    {
        int a,b,c;
        cin>>a>>b>>c;
        ans+=a;
        v[i]=b-a;w[i]=c;
    }
    for(i=0;i<n;i++)
    {
        for(j=x;j>=w[i];j--)
            dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
    }
    dp[x]+=ans;
    cout<<dp[x]*5<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值