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

GESP2025年6月认证C++五级( 第三部分编程题(1、奖品兑换))



🏰《数据结构王国 · 编程题1:奖品兑换大作战》》


一、🌈故事背景

在班级王国里 👑

老师发了两种奖励券:

  • 📘 课堂优秀券(蓝色)

  • 📗 作业优秀券(绿色)

小 A 拿着一堆券,想去换奖品 🎁!


二、🎯兑换规则

两种兑换方式

🥇方式1

👉 用a张课堂券 +b张作业券 → 换 1 个奖品


🥈方式2

👉 用b张课堂券 +a张作业券 → 换 1 个奖品


三、❓问题

👉 小 A 有:

  • n 张课堂券

  • m 张作业券

👉最多可以换多少个奖品?


四、🧠关键思考

1、🌟核心问题

👉 每换一次,就会消耗券!

👉 两种方式可以混着用!


2、❗关键难点

👉 怎么搭配,才能换最多?


五、🧠结题思路

我们来想一个策略👇


1、🎯思路:尝试“换 x 个”行不行?

👉 假设:我们总共换x个奖品

那我们要检查:

👉这些券够不够用?


2、🧠检查方法

假设:

  • 有一部分用方式1

  • 有一部分用方式2

但我们不用真的分!

👉 用一个“调整技巧”判断就行(这就是参考程序的核心思想)


3、🧠核心技巧

(1)👉 如果我们想换 x 个奖品:

先假设:

  • 全部用方式1
    👉 消耗:

  • 课堂:x × a

  • 作业:x × b


(2)⚠️如果作业券不够怎么办?

👉 就把一些“方式1”改成“方式2”

👉 因为方式2会:

  • 少用一些作业券

  • 多用一些课堂券


(3)👉 最终目标:

👉 调整后满足:

  • 课堂 ≤ n

  • 作业 ≤ m


六、🚀完整解法:二分答案!

👉 问题变成:

👉最多能换多少次?


1、🎯做法

👉 用二分查找答案!


2、🧠步骤

① 左边:0
② 右边:最多可能(比如 n )

③ 每次猜一个 mid(尝试换 mid 次)

④ 用 check(mid) 判断是否可行


💻完整参考代码

#include <iostream> using namespace std; long long n, m, a, b; // 检查能不能换 v 个奖品 bool check(long long v) { long long x = v * a; // 课堂券 long long y = v * b; // 作业券 // 如果作业券不够,就调整 if (y > m) { long long t = (y - m + (b - a) - 1) / (b - a); y -= t * (b - a); x += t * (b - a); } return x <= n && y <= m; } int main() { cin >> n >> m; cin >> a >> b; if (n > m) swap(n, m); if (a > b) swap(a, b); long long l = 0, r = n; while (l < r) { long long mid = (l + r + 1) / 2; if (check(mid)) l = mid; else r = mid - 1; } cout << l << endl; return 0; }

七、🎯举例方便理解

1、输入:

n = 8, m = 8 a = 2, b = 1

2、🧠解释

👉 一次兑换:

  • 用 2 课堂 + 1 作业

  • 用 1 课堂 + 2 作业


3、尝试

👉 最多能换多少?

👉 答案:5


八、🎉最终总结


🌟这题用到的知识点:

1️⃣ 复杂问题 → 转成“能不能做到”
2️⃣ 用函数 check 判断
3️⃣ 用二分找最大答案
4️⃣ 灵活调整资源分配


九、📌记忆口诀

👉 不能直接算答案
👉 就用二分去“猜答案”


http://www.jsqmd.com/news/724077/

相关文章:

  • 基于Vue 3与Spring Boot的腾讯云CVM管理平台设计与实现
  • 从0到1掌握AI产品开发:5阶段进阶指南,打造爆款AI应用!
  • 众智商学院SCMP培训值得报考吗?2026供应链认证深度解析 - 众智商学院课程中心
  • AzurLaneAutoScript:碧蓝航线全自动脚本,让你的游戏时间更高效
  • 银河麒麟高级服务器操作系统V11-修改输入法
  • 抖音直播数据采集实战:从网页端API到实时弹幕分析
  • Spring Boot 专家级面试题库
  • 2026年3月木质素磺酸钙品牌推荐分析,黄糊精/型煤球团粘合剂/偏高岭土/陶土,木质素磺酸钙实力厂家推荐分析 - 品牌推荐师
  • 国内顶尖专业包装设计公司权威推荐,大品牌高端升级首选机构 - 设计调研者
  • 你的数据正在喂养 AI:从 Atlassian 公告,看科技平台的数据训练默认政策
  • 在 HTML 文件的 <script> 标签内或外部 JS 文件中设置断点。
  • 专业经验丰富的企业VI设计公司推荐,企业品牌形象升级靠谱合作首选 - 设计调研者
  • CUDA性能优化实战:从内存访问到并行计算的全面指南
  • 基于MCP协议构建YouTube数据连接器,赋能AI助手内容分析
  • MoS路由器架构设计与多模态交互优化解析
  • Python发票自动化处理实战:Invoice Forge解析、生成与集成指南
  • XHS-Downloader:你的小红书内容管理专家,轻松实现批量采集与智能归档
  • 5分钟搞定Switch手柄PC适配:BetterJoy终极指南
  • 研究型AI vs 工程型AI:两种截然不同的职业发展路径
  • Joy-Con Toolkit终极指南:免费开源工具彻底解决摇杆漂移问题
  • 广州专业包装设计公司靠谱推荐,本地品牌做包装设计合作优选 - 设计调研者
  • HoRain云--什么是域名?
  • MTKClient Live DVD V6刷机工具:系统优化与实战避坑指南
  • 2026性价比最高包装设计公司对比与推荐,中小品牌做包装不花冤枉钱! - 设计调研者
  • AI产品经理面试必问!3个Offer学长真实简历揭秘转行核心能力,小白也能轻松拿下Offer!
  • 全程完整复盘:Claude Code MCP 搭建所有错误点 + 出错原因 + 通用易错点(保姆级拆解)
  • 如何利用NVIDIA Profile Inspector深度优化游戏性能:终极指南
  • 终极指南:如何在不破坏系统的情况下迁移C盘大文件到其他分区
  • 当AI开始写代码,软件测试从业者如何保住饭碗并实现升维
  • 2026年标准件厂家有哪些,五金件/螺栓/螺丝/涂胶/非标螺丝/标准件/螺母/紧固件,标准件品牌联系方式 - 品牌推荐师