#include<iostream> #include<vector> #include<algorithm> // 定义结构体xy,表示苹果的属性 // x: 苹果的高度 // y: 摘取苹果需要的力量/花费 struct xy { int x, y; }; // 比较函数,用于排序 // 按照苹果的花费y从小到大排序 // 这样排序后,花费小的苹果会排在前面 int cmpxy(const xy &a, const xy &b) { return a.y < b.y; } using namespace std; int main() { // 输入数据 int n, s, a, b; // n:苹果总数, s:拥有的总力量, a:身高, b:凳子高度 cin >> n >> s >> a >> b; // 计算能够到的最大高度:身高 + 凳子高度 a += b; // 创建向量v,用于存储能够到的苹果 vector<xy> v; // 输入所有苹果的信息,并筛选能够到的苹果 for(int i = 0; i < n; i++) { xy p; // 临时变量存储一个苹果的信息 cin >> p.x >> p.y; // 输入苹果的高度和花费 // 如果苹果的高度不超过能够到的最大高度,则将其加入向量v if (p.x <= a) { v.push_back(p); } } // 对能够到的苹果按照花费从小到大排序(贪心策略) // 这样我们可以优先摘取花费小的苹果,从而摘到更多的苹果 sort(v.begin(), v.end(), cmpxy); int sum = 0; // 记录摘到的苹果数量 // 遍历排序后的苹果向量 for (int x = 0; x < v.size(); x++) { // 如果当前苹果的花费不超过剩余的力量 if (v[x].y <= s) { s -= v[x].y; // 花费力量摘取这个苹果 sum++; // 摘到的苹果数量加1 } // 注意:这里没有break,因为即使当前苹果无法摘取,后续可能有更便宜的苹果 // 但由于我们已经排序了,所以实际上后续苹果的花费不会更小 // 不过题目保证力量s非负,且输入合理,所以这里逻辑正确 } // 输出最多能摘到的苹果数量 cout << sum << endl; return 0; }P1478 陶陶摘苹果(升级版)题解
张小明
前端开发工程师
无源蜂鸣器驱动设计入门必看:基础原理与电路连接
无源蜂鸣器驱动设计实战指南:从原理到代码,彻底搞懂“嘀”一声背后的秘密你有没有遇到过这种情况:明明代码烧录成功、接线也检查了三遍,可一上电——蜂鸣器就是不响?或者声音微弱得像蚊子叫,甚至MCU莫名其妙…
操作指南:Intel平台启用USB 3.2高速模式
插上就跑满20Gbps?Intel平台解锁USB 3.2 Gen 2x2实战全解析 你有没有遇到过这种情况:花大价钱买了支持20Gbps的NVMe硬盘盒,用Type-C线一插,结果CrystalDiskMark跑出来才900MB/s?甚至设备管理器里还显示“USB 3.2 Gen …
批量导入文档技巧:节省时间的实用方法
批量导入文档技巧:节省时间的实用方法 在企业知识管理或个人数字资产日益增长的今天,一个常见的挑战浮现出来:如何让AI真正“读懂”我们手头成百上千份PDF、Word文档和Markdown笔记?很多团队尝试过搭建智能问答系统,但…
AI和效率压力?现代数据中心的新技术解决方案
AI模型的训练与推理需要巨大的计算资源,这直接推高了能源消耗与冷却需求。当前,全球数据中心约占全球电力消耗的1%至2%,而高盛预计,到本十年末,这一比例可能上升至4%……AI时代的数据中心挑战随着人工智能的持续发展与…
医疗文档处理新思路:借助anything-llm实现病历问答
医疗文档处理新思路:借助 Anything-LLM 实现病历问答 在医院信息科的某个深夜,一位年轻医生正为第二天的疑难病例讨论做准备。他需要从过去三年的心内科出院记录中找出所有使用华法林且发生过轻微出血事件的老年患者——这项任务本该只需几分钟ÿ…
高校图书馆智能化升级:学生自助查询论文系统
高校图书馆智能化升级:学生自助查询论文系统 在高校科研节奏日益加快的今天,一个常见的场景是:研究生小张为了撰写文献综述,在图书馆数据库中输入关键词反复检索,却始终无法精准定位到所需的核心观点。他不得不下载十几…