news 2026/6/10 15:45:07

2025年12月GESP(C++四级): 优先购买

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2025年12月GESP(C++四级): 优先购买

2025年12月GESP(C++四级): 优先购买

题目描述

小 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个商品的商品名、价格、优先级。

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

输出格式

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

输入输出样例 1
输入 1
20 4 apple 6 8 bus 15 1 cab 1 10 water 4 8
输出 1
bus cab water
数据范围

对于所有测试点,保证1 ≤ ∣ S i ∣ ≤ 10 1 \leq |S_i| \leq 101Si101 ≤ M , P i ≤ 10 5 1 \leq M, P_i \leq 10^51M,Pi1051 ≤ N ≤ 10 3 1 \leq N \leq 10^31N1031 ≤ V i ≤ 10 1 \leq V_i \leq 101Vi10。商品名仅由小写字母组成且不存在两个相同的商品名。

思路分析

本题要求按照特定优先级顺序购买商品,并在预算允许范围内尽可能多地购买商品。解题思路如下:

  1. 购买策略排序:根据题目要求,需要先按优先级V(越小越优先)、再按价格P(越低越优先)、最后按商品名S(字典序越小越优先)排序
  2. 贪心购买:按照上述排序顺序依次尝试购买,只要预算足够就购买该商品
  3. 输出要求:最终需要按商品名字典序输出购买的商品列表

代码实现

#include<bits/stdc++.h>usingnamespacestd;intm,n;// 预算m和商品数量nstructnode{string s;// 商品名intp;// 价格intv;// 优先级boolf;// 标记是否购买}a[1010];// 商品数组// 比较函数1:用于购买策略排序boolcmp(node a,node b){// 首先按优先级v升序排列(v越小优先级越高)if(a.v!=b.v)returna.v<b.v;else{// v相同时,按价格p升序排列(价格越低越优先)if(a.p!=b.p)returna.p<b.p;// v和p都相同时,按商品名字典序升序排列elsereturna.s<b.s;}}// 比较函数2:用于输出时按商品名字典序排序boolcmp2(node a,node b){returna.s<b.s;}intmain(){// 输入预算和商品数量cin>>m>>n;// 输入商品信息并初始化购买标记for(inti=1;i<=n;i++){cin>>a[i].s>>a[i].p>>a[i].v;a[i].f=false;// 初始化为未购买}// 步骤1:按购买策略排序(优先级->价格->商品名)sort(a+1,a+n+1,cmp);// 步骤2:按照排序顺序尝试购买商品for(inti=1;i<=n;i++){if(m>=a[i].p){// 如果预算足够购买当前商品a[i].f=true;// 标记为已购买m-=a[i].p;// 扣除相应预算}}// 步骤3:为输出做准备,按商品名字典序重新排序sort(a+1,a+n+1,cmp2);// 步骤4:输出所有购买的商品名for(inti=1;i<=n;i++){if(a[i].f){cout<<a[i].s<<endl;}}return0;}

功能分析

1. 数据结构设计
  • 使用结构体node存储每个商品的完整信息
  • 包含商品名s、价格p、优先级v和购买标记f
  • 数组a[1010]存储所有商品,满足N≤1000的数据范围
2. 核心算法流程
  • 第一次排序:按照题目要求的购买优先级排序
    • 第一关键字:优先级v(升序,v越小越优先)
    • 第二关键字:价格p(升序,价格越低越优先)
    • 第三关键字:商品名s(字典序升序)
  • 购买决策:贪心算法
    • 按排序后的顺序依次考虑每个商品
    • 只要当前预算足够,就购买该商品并更新预算
  • 第二次排序:为满足输出要求
    • 按商品名字典序重新排序所有商品
    • 便于按字典序输出购买的商品
3. 时间复杂度分析
  • 两次排序:O(N log N),N≤1000,完全可行
  • 一次遍历购买:O(N)
  • 总体复杂度:O(N log N),效率较高
4. 示例验证
输入: 20 4 apple 6 8 bus 15 1 cab 1 10 water 4 8 排序后购买顺序: 1. bus (v=1, p=15) -> 购买,预算剩余5 2. apple (v=8, p=6) -> 预算不足,跳过 3. water (v=8, p=4) -> 购买,预算剩余1 4. cab (v=10, p=1) -> 购买,预算剩余0 按字典序输出: bus cab water

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}
  • 一、CSP信奥赛C++通关学习视频课:
    • C++语法基础
    • C++语法进阶
    • C++算法
    • C++数据结构
    • CSP信奥赛数学
    • CSP信奥赛STL
  • 二、CSP信奥赛C++竞赛拿奖视频课:
    • 信奥赛csp-j初赛高频考点解析
    • CSP信奥赛C++复赛集训课(12大高频考点专题集训)
  • 三、考级、竞赛刷题题单及题解:
    • GESP C++考级真题题解
    • CSP信奥赛C++初赛及复赛高频考点真题解析
    • CSP信奥赛C++一等奖通关刷题题单及题解

详细内容:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

  • 2025 csp-j 复赛真题及答案解析(最新更新)
  • 2025 csp-x(山东) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(河南) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(辽宁) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(江西) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(广西) 复赛真题及答案解析(最新更新)
  • 2020 ~ 2024 csp 复赛真题题单及题解
  • 2019 ~ 2022 csp-j 初赛高频考点真题分类解析
  • 2021 ~ 2024 csp-s 初赛高频考点解析
  • 2023 ~ 2024 csp-x (山东)初赛真题及答案解析
  • 2024 csp-j 初赛真题及答案解析
  • 2025 csp-j 初赛真题及答案解析(最新更新)
  • 2025 csp-s 初赛真题及答案解析(最新更新)
  • 2025 csp-x (山东)初赛真题及答案解析(最新更新)
  • 2025 csp-x (江西)初赛真题及答案解析(最新更新)
  • 2025 csp-x (辽宁)初赛真题及答案解析(最新更新)

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

  • 129 道刷题练习和详细题解,涉及:模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图

4、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:34:15

消费级显卡实测:RTX 4090运行lora-scripts的性能表现

消费级显卡实测&#xff1a;RTX 4090运行lora-scripts的性能表现 在AI创作门槛不断降低的今天&#xff0c;越来越多设计师、开发者甚至独立艺术家开始尝试训练自己的专属模型——不是为了跑分或发论文&#xff0c;而是真正用它生成符合个人风格的内容。一个典型的场景是&#x…

作者头像 李华
网站建设 2026/6/10 13:14:08

JLink驱动下载成功但连接失败原因分析

JLink驱动装好了却连不上&#xff1f;别急&#xff0c;这才是真正的排查路线图你有没有遇到过这种“玄学”问题&#xff1a;JLink的驱动明明已经顺利安装&#xff0c;设备管理器里也清清楚楚地显示着“J-Link”&#xff0c;但一到Keil或者VS Code里点“Connect”&#xff0c;就…

作者头像 李华
网站建设 2026/6/10 11:36:12

【C++26并发编程前瞻】:基于GCC 14的实践指南与性能预测

第一章&#xff1a;C26并发编程的新纪元C26 标准的临近发布标志着并发编程进入一个全新的发展阶段。语言层面引入了多项现代化特性&#xff0c;旨在简化多线程开发、提升执行效率并增强代码可读性。核心变化包括对 std::execution 的深度集成、协程在异步任务中的原生支持&…

作者头像 李华
网站建设 2026/6/10 11:34:50

好写作AI:AI辅助写作中的偏见规避与算法公平性研究

在人工智能深刻赋能学术写作的同时&#xff0c;一个至关重要但常被忽视的议题随之浮现&#xff1a;算法可能无意中固化或放大训练数据中存在的偏见&#xff0c;从而影响学术表达的客观性与公平性。好写作AI正视这一挑战&#xff0c;将偏见规避与算法公平性置于核心研发议程&…

作者头像 李华
网站建设 2026/6/10 11:34:31

好写作AI:透明度声明——使用好写作AI的学术规范与期刊政策研究

随着学术出版界对人工智能工具的正式回应&#xff0c;使用如好写作AI等工具进行论文辅助的“透明度声明”已从道德倡导演变为明确的期刊政策要求。本文旨在分析这一规范趋势&#xff0c;并探讨如何构建合规、清晰的透明度声明。好写作AI官方网址&#xff1a;https://www.haoxie…

作者头像 李华