当前位置: 首页 > news >正文

背包专题 - 古代王国寻宝问题

古代王国寻宝问题

题目描述

最近,iSea来到了一个古老的国度。曾几何时,这里是世界上最富有、最强大的王国。即便现在不再那么富裕,这里的人民依然骄傲自豪。

这里的商人们各有特色,每人只卖一样宝贝,售价是 Pi,但如果你身上的钱少于 Qi,他们可不卖给你哦。iSea给每件宝贝都评了个价值 Vi。

如果他手头有 M 单位的钱,最多能收获多大价值呢?

输入格式

输入包含多个测试用例。

每个测试用例格式:

第一行有两个整数 NM

  • N:宝贝数量 (1 ≤ N ≤ 500)
  • M:初始资金 (1 ≤ M ≤ 5000)

接下来有 N 行,每行三个数字 PiQiVi

  • Pi:宝贝的售价 (1 ≤ Pi ≤ Qi ≤ 100)
  • Qi:购买所需的最低资金门槛 (1 ≤ Pi ≤ Qi ≤ 100)
  • Vi:宝贝的价值 (1 ≤ Vi ≤ 1000)

输出格式

对每个测试用例,输出一个整数,表示 iSea 能获得的最大价值。

输入输出样例

输入样例

2 10
10 15 10
5 10 5
3 10
5 10 5
3 5 6
2 7 3

输出样例

5
11

约束条件

参数 范围 说明
N 1 ≤ N ≤ 500 宝贝数量
M 1 ≤ M ≤ 5000 初始资金
Pi 1 ≤ Pi ≤ Qi ≤ 100 宝贝售价
Qi 1 ≤ Pi ≤ Qi ≤ 100 购买门槛
Vi 1 ≤ Vi ≤ 1000 宝贝价值

题解

每人只卖一样宝贝,售价是 Pi,但如果你身上的钱少于 Qi,每人只卖一样宝贝,售价是 Pi,但如果你身上的钱少于 Qi,他们可不卖给你哦.

  1. 取消Q_i,限制,问题转化为01背包问题
  2. 核心问题在于确定一种购买顺序,如果存在一个购买方案,vi>=Qi
    F[i][v] ,对于物品i,空间v的最大获利为F[i][v].v>Qi, 才能购买第i个物品。
    思考:\(Q_i-P_i\) 为冗余的购买力。从小到大排序,这样可以最大化资金利用率。

样例分析

输入:
3 10
5 10 5    (售价5,门槛10,价值5)
3 5 6     (售价3,门槛5,价值6)
2 7 3     (售价2,门槛7,价值3)
输出:11

分析(排序后):

  1. 排序:按(Qi-Pi)差值排序: 宝贝2:Qi-Pi=2 (门槛5-售价3) 宝贝3:Qi-Pi=5 (门槛7-售价2) 宝贝1:Qi-Pi=5 (门槛10-售价5)
  2. 购买顺序: 买宝贝2(3,5,6):花费3元,获得6价值,剩余7元 买宝贝3(2,7,3):花费2元,获得3价值,剩余5元 买宝贝1(5,10,5):无法购买(门槛10 > 剩余5)
  3. 总价值:6 + 3 = 9

但最佳方案是:

  • 只买宝贝1和宝贝2: 先买宝贝2:花费3元,获得6价值,剩余7元 买宝贝1:花费5元,获得5价值,剩余2元
  • 总价值:6 + 5 = 11

代码


#include <bits/stdc++.h>
using namespace std;
int n,m,f[5005];
struct node {int p,q,v;
}s[501];int main() {while (scanf("%d%d",&n,&m)==2) {for (int i=1;i<=n;i++) scanf("%d%d%d",&s[i].p,&s[i].q,&s[i].v);sort(s+1,s+1+n,[](node t1,node t2){return t1.q-t1.p<t2.q-t2.p;});memset(f,0,sizeof(f));for (int i=1;i<=n;i++)for (int j=m;j>=s[i].q;j--)f[j]=max(f[j],f[j-s[i].p]+s[i].v);cout<<f[m]<<endl;}return 0;
}
http://www.jsqmd.com/news/336212/

相关文章:

  • 2026年数据拉通与集成服务靠谱公司推荐汇总 - 品牌2025
  • <span class=“js_title_inner“>一个免费远程控制电脑及手机的神器</span>
  • Typora软件/markdown语法快速入门
  • <span class=“js_title_inner“>Fairy Mobile GUI Agent——RGR、OCA、EMA的综合落地</span>
  • 富马酰化如何成为代谢与表观遗传调控的新枢纽?
  • <span class=“js_title_inner“>提示词软件危机——Agentic AI系统的工程化挑战</span>
  • <span class=“js_title_inner“>15年前,小沈阳一个晚上爆红年赚上亿,如今却“销声匿迹”?</span>
  • 【Linux 进程实战】C 语言实现父子进程协作:定时日志生成 + 自动清理系统(附完整可运行代码)
  • 2026年激光测距仪制造企业综合实力排名,哪家性价比高选哪家 - 工业设备
  • AIGC 应用工程师(3-5 年)面试题精讲:从基础到实战的系统备战清单
  • <span class=“js_title_inner“>如何破解3D“创作鸿沟”?元境携手北航的这场高峰论坛将揭晓路径!</span>
  • <span class=“js_title_inner“>【观察】走进“AI数智南研”,体验智慧园区新标杆</span>
  • Linux命令-look(在已排序的文件中查找以特定字符串开头的行)
  • <span class=“js_title_inner“>LLM4SE的2025:LLM 改变了写代码的方式,但还没改变软件工程</span>
  • <span class=“js_title_inner“>欢迎申报2025数智产品用户选型年度大奖</span>
  • 202560202
  • <span class=“js_title_inner“>幂等性的劣化:从数学确定性到AI不确定性的演进</span>
  • <span class=“js_title_inner“>AI Coding评测,到底谁在“裸泳”?</span>
  • 2026年知名的装修板材/家具定制板材热门品牌厂家推荐 - 行业平台推荐
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的酒店客房系统的设计与实现
  • <span class=“js_title_inner“>Agentic AI系统性工程框架——RGR、OCA与EMA三位一体方法论</span>
  • <span class=“js_title_inner“>正式裁员64796人,赔偿N+4!</span>
  • <span class=“js_title_inner“>年终总结 | AI 正在光速进化,而我们还得在 2026 年的泥潭里挣扎</span>
  • 【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
  • <span class=“js_title_inner“>年度好物大赏 | 2025年“把钱花在了刀刃上”的幸福瞬间</span>
  • <span class=“js_title_inner“>Qwen3-Coder: 在世界中自主编程</span>
  • NestJS 路由顺序问题解除指南
  • 2026固生堂看病贵不贵真实反馈:药材与处方影响解析 - 品牌排行榜
  • 2026年口碑好的ELITE 700型X荧光分析仪/钢铁行业荧光分析仪厂家推荐与采购指南 - 行业平台推荐
  • <span class=“js_title_inner“>Skills与MCP的区别、Skills与提示词的区别</span>