news 2026/4/9 11:18:15

GESP认证C++编程真题解析 | B4452 [GESP202512 四级] 优先购买

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | B4452 [GESP202512 四级] 优先购买

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[B4452 GESP202512 四级] 优先购买 - 洛谷

【题目描述】

小 A 有M MM元预算。商店有N NN个商品,每个商品有商品名S SS、价格P PP和优先级V VV三种属性,其中V VV为正整数,且V VV越小代表商品的优先级越高。

小 A 的购物策略为:

  • 总是优先买优先级最高的东西;
  • 如果有多个最高优先级商品,购买价格最低的;
  • 如果有多个优先级最高且价格最低的商品,购买商品名字典序最小的。

小 A 想知道能购买哪些商品。

【输入】

第一行两个正整数M , N M, NM,N,代表预算和商品数。

之后N NN行,每行一个商品,依次为S i P i V i S_i\ P_i\ V_iSiPiVi,代表第i ii个商品的商品名、价格、优先级。

数据保证不存在两个名字相同的商品。

【输出】

按照字典序从小到大的顺序,输出所有购买商品的商品名。

【输入样例】

20 4 apple 6 8 bus 15 1 cab 1 10 water 4 8

【输出样例】

bus cab water

【算法标签】

《洛谷 B4452 优先购买》 #排序# #GESP# #2025#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=1005;// 最大物品数量// 定义物品结构体structNode{string s;// 物品名称intp;// 物品价格intv;// 物品评分/价值};Node a[N];// 存储所有物品Node b[N];// 存储购买的物品intm,n;// m: 预算, n: 物品总数intcur;// 已购买物品数量// 第一个比较函数:用于初始排序// 排序优先级:v(评分)升序 → p(价格)升序 → s(名称)字典序boolcmp(Node x,Node y){if(x.v!=y.v)returnx.v<y.v;// 先按评分升序排序if(x.p!=y.p)returnx.p<y.p;// 评分相同,按价格升序returnx.s<y.s;// 评分和价格都相同,按名称字典序}// 第二个比较函数:按名称字典序排序boolcmp2(Node x,Node y){returnx.s<y.s;// 只按名称字典序排序}intmain(){// 输入预算m和物品数量ncin>>m>>n;// 输入n个物品的信息for(inti=1;i<=n;i++){cin>>a[i].s>>a[i].p>>a[i].v;}// 步骤1:对物品进行排序// 排序规则:先按v升序,v相同按p升序,都相同按s字典序sort(a+1,a+n+1,cmp);// 步骤2:在预算范围内尽可能多地购买物品for(inti=1;i<=n;i++){// 如果当前预算足够购买第i个物品if(m>=a[i].p){m-=a[i].p;// 扣除价格b[++cur]=a[i];// 将物品加入购买列表}// 这里不能break,因为后面可能有更便宜的物理可购买}// 步骤3:对购买的物品按名称字典序排序sort(b+1,b+cur+1,cmp2);// 步骤4:输出购买的物品名称for(inti=1;i<=cur;i++){cout<<b[i].s<<endl;}return0;}

【运行结果】

20 4 apple 6 8 bus 15 1 cab 1 10 water 4 8 bus cab water
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 18:32:42

Markdown侧边栏导航:Miniconda-Python3.9配合mkdocs-material实现

使用 Miniconda 与 mkdocs-material 构建现代化 Markdown 文档系统 在当今技术团队协作日益紧密的背景下&#xff0c;如何高效产出结构清晰、易于维护的技术文档&#xff0c;已经成为研发流程中不可忽视的一环。我们常常面临这样的困境&#xff1a;项目初期写下的几篇 .md 文件…

作者头像 李华
网站建设 2026/4/3 18:20:21

Anaconda prompt启动慢:Miniconda-Python3.9无GUI更快响应

Miniconda-Python3.9&#xff1a;告别 Anaconda Prompt 启动延迟的轻量级实践 在数据科学与 AI 开发中&#xff0c;你是否曾经历过这样的场景&#xff1a;双击“Anaconda Prompt”&#xff0c;然后盯着黑窗口卡顿数秒甚至十几秒&#xff0c;才终于看到命令行光标闪烁&#xff1…

作者头像 李华
网站建设 2026/3/26 23:46:11

Docker Logs查看输出:Miniconda-Python3.9追踪启动信息

Docker Logs查看输出&#xff1a;Miniconda-Python3.9追踪启动信息 在AI与数据科学项目日益复杂的今天&#xff0c;一个常见的痛点是&#xff1a;代码在本地运行完美&#xff0c;但换到同事机器或生产环境却“无法复现”。这种“在我电脑上明明能跑”的尴尬&#xff0c;往往源于…

作者头像 李华
网站建设 2026/4/6 6:35:16

使用Miniconda-Python3.9快速启动GitHub上的PyTorch项目

使用 Miniconda-Python3.9 快速启动 GitHub 上的 PyTorch 项目 在深度学习项目开发中&#xff0c;最让人头疼的往往不是模型设计或训练调参&#xff0c;而是——“环境配不起来”。你是否经历过这样的场景&#xff1a;从 GitHub 克隆了一个热门 PyTorch 项目&#xff0c;兴冲冲…

作者头像 李华
网站建设 2026/3/27 13:53:12

Conda search查找包信息:Miniconda-Python3.9查询最新版本

Conda search查找包信息&#xff1a;Miniconda-Python3.9查询最新版本 在数据科学、AI研发和现代软件工程的日常实践中&#xff0c;一个看似简单却频繁出现的需求是&#xff1a;如何快速确认某个Python包在当前环境中是否存在可用版本&#xff1f;是否支持Python 3.9&#xff1…

作者头像 李华