news 2026/5/5 1:22:19

GESP5级C++考试语法知识(贪心算法(一)课堂例题精讲)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP5级C++考试语法知识(贪心算法(一)课堂例题精讲)


🎮《贪心王国·第一课闯关挑战》


🏴‍☠️ 第一类:海盗船系列(选最小)


🎯 第1关(基础入门)

1、题目:

容量 = 10
货物:1 2 3 4 5

👉 最多能装几件?


2、✅ 正确答案

4件(1+2+3+4=10)


3、❗ 常见错误

👉 有学生选:5 + 4 = 9(只装2件)


4、💡 学习重点

👉目标是“数量最多”,不是“体积最大”!



🎯 第2关(顺序陷阱)

1、题目:

容量 = 10
货物:8 1 9 2 7


2、❗ 坑点

👉 数据是乱序的!


3、✅ 正确思路

排序 → 1 2 7 8 9
→ 1+2+7=10 → 3件


4、❗ 常见错误

👉 不排序,直接从前往后选


5、💡 讲解一句话

👉贪心之前,很多题必须排序!



🎯 第3关(边界陷阱)

1、题目:

容量 = 10
货物:2 3 5


2、❗ 坑点

👉 刚好装满


3、❗ 常见错误

👉 写成< 10而不是<= 10


4、💡 讲解重点

👉等于也可以装!



🎯 第4关(“贪大”误区)

1、题目:

容量 = 10
货物:6 4 3 3


2、❗ 常见错误思路

👉 选最大的:6 → 剩4 → 再选4 → 2件


3、✅ 正确答案

3件(3+3+4=10)


4、💡 核心讲解

👉这题专门打脸“选最大”的错误贪心!



🎯 第5关(装不满陷阱)

1、题目:

容量 = 10
货物:6 6 6


2、✅ 正确答案

1件


3、❗ 常见错误

👉 有学生会觉得“装不满就不选”


4、💡 讲解重点

👉目标是尽量多,不是必须装满!


海盗船参考程序:

#include <iostream> #include <algorithm> using namespace std; int main() { int n, a[25]; cin >> n; for(int i = 0; i < n; i++) { cin >> a[i]; } // 从小到大排序 sort(a, a + n); int sum = 0; // 当前体积 int cnt = 0; // 装了多少件 for(int i = 0; i < n; i++) { if(sum + a[i] <= 500) { sum += a[i]; cnt++; } else { break; } } cout << cnt; }


🚰 第二类:排队接水(选最短时间)


🎯 第6关(基础)

1、题目:

3个人:3 1 2

👉 最优顺序?


2、✅ 正确答案

1 2 3


3、❗ 常见错误

👉 按输入顺序不变


4、💡 讲解重点

👉必须排序!



🎯 第7关(直觉误导)

1、题目:

时间:10 1 1


2、❗ 常见错误

👉 有学生会让“最长的先”(误以为公平)


3、✅ 正确答案

1 1 10


4、💡 讲解重点

👉贪心不是“公平”,而是“总时间最优”



🎯 第8关(重复值陷阱)

1、题目:

时间:5 5 5 5


2、❗ 坑点

👉 全一样!


3、✅ 正确结论

👉 顺序无所谓


4、💡 讲解重点

👉当数据相同时,贪心策略不唯一



🎯 第9关(计算陷阱)

1、题目:

时间:1 2 3

👉 平均等待时间?


2、❗ 常见错误

👉 只算总时间,不算等待


3、✅ 正确计算

顺序:1 2 3

等待:

  • 1 → 0

  • 2 → 1

  • 3 → 1+2=3

总等待 = 4
平均 = 4 / 3


4、💡 讲解重点

👉等待时间是“前面所有人的和”!



🎯 第10关(综合大坑)

1、题目:

时间:8 3 5 1


2、❗ 常见错误流程

  • 不排序

  • 或排序后不会算等待


3、✅ 正确步骤

排序 → 1 3 5 8

等待:

  • 1 → 0

  • 3 → 1

  • 5 → 1+3=4

  • 8 → 1+3+5=9


4、💡 核心讲解

👉排序 + 累加 = 贪心核心套路


接水问题参考程序:

#include <iostream> #include <algorithm> using namespace std; int main() { int n; cin >> n; int t[1000]; for(int i = 0; i < n; i++) { cin >> t[i]; } sort(t, t + n); // 从小到大 long long wait = 0; long long sum = 0; for(int i = 0; i < n; i++) { sum += wait; wait += t[i]; } double avg = (double)sum / n; cout << avg; }

💣 最重要:学生最容易犯的 6 大错误总结


❌ 错误1:不排序直接贪

👉 最常见!!

💡 对策:
👉先排序,再贪心!


❌ 错误2:搞错“贪什么”

  • 海盗船 → 应该选小 ❗

  • 接水 → 应该选快 ❗

💡 对策:
👉 先问:目标是什么?



❌ 错误3:把“装满”当目标

💡 正解:
👉 是“最多件”,不是“刚好满”



❌ 错误4:边界写错(<=)

💡 对策:
👉 多强调:
👉能等于就必须等于!



❌ 错误5:不会算等待时间

💡 核心一句话:
👉每个人的等待 = 前面所有人的时间



❌ 错误6:以为贪心永远对

(非常关键,给第二课埋伏笔)

💡 引导学生:
👉 “如果规则变了,还对吗?”



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

基于扩散模型数据增强的YOLOv10少样本检测:从零开始的完整实战

目录 二、核心思路:为什么扩散模型比传统增强强100倍 三、准备工作:环境配置和数据集说明 3.1 硬件要求 3.2 环境安装 3.3 参考数据集选择 四、核心代码:扩散模型数据增强完整实现 4.1 方案设计 4.2 完整代码实现 4.3 常用Prompt模板 五、YOLOv10训练:从增强数据…

作者头像 李华
网站建设 2026/5/5 1:13:37

阿里面试官问:Embedding怎么评估?

RAG 高频判断题 Embedding 怎么评估&#xff0c;光看 MTEB 榜单行不行&#xff1f;别被榜单骗了&#xff1a;50 个真实问题&#xff0c;往往比一个公开排名更能说明企业 RAG 到底靠不靠谱。 先把术语翻成人话 RAG&#xff1a;先找资料再回答 embedding&#xff1a;文字变数…

作者头像 李华
网站建设 2026/5/5 1:13:27

量子辅助PINN求解抛物型偏微分方程的技术解析

1. 量子辅助PINN求解抛物型偏微分方程的技术解析 在科学计算领域&#xff0c;求解偏微分方程(PDEs)一直是个核心挑战。传统数值方法如有限元法虽然成熟&#xff0c;但在处理高维问题时面临"维度灾难"。近年来兴起的物理信息神经网络(PINNs)通过将物理定律直接编码到神…

作者头像 李华
网站建设 2026/5/5 1:01:48

基于CPU+GPU架构的雷达信号处理快速实现CUDA【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;查看文章底部二维码&#xff08;1&#xff09;基于CUDA流与共享内存的脉压并行化&#xff1a;雷达…

作者头像 李华
网站建设 2026/5/5 0:59:27

基于RAG的智能文档问答系统IncarnaMind:从原理到实战部署

1. 项目概述&#xff1a;与你的文档库进行深度对话的智能助手如果你和我一样&#xff0c;手头积攒了成堆的PDF报告、研究论文、TXT格式的笔记和文档&#xff0c;每次想从中快速找到某个特定信息&#xff0c;或者综合几份文件的内容来回答一个复杂问题时&#xff0c;都感到无比头…

作者头像 李华