#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 陶陶摘苹果(升级版)题解
张小明
前端开发工程师
Day 21 常见聚类算法
浙大疏锦行 知识点 1.聚类的指标 2.聚类常见算法:kmeans聚类、dbscan聚类、层次聚类 3.三种算法对应的流程 作业:把心脏病数据进行聚类处理 一.kmeans聚类处理结果: 这里我选择K4,结果如下: 能很明显看出来区分度不足ÿ…
全面讲解vivado2020.2 Windows安装注意事项
Vivado 2020.2 Windows安装全避坑指南:从下载到运行的实战经验 最近帮实验室几位同学装Vivado,发现哪怕是最基础的“双击下一步”式安装流程,也藏着不少让人抓狂的坑。尤其是 vivado2020.2 这个版本——它既不是最新的(AMD已推…
跨端路由设计:如何统一 RN 与 Web 的页面模型
网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…
【转载】RTOS中队列、环形队列、优先级队列的实现及使用
1. 什么是队列 队列(queue)是一种只能在一端插入元素、在另一端删除元素的数据结构,遵循「先入先出」(FIFO)的规则。 队列中有两个基本概念: 队头指针(可变):永远指向此队…
全文搜索增强:关键词高亮与模糊匹配实现
全文搜索增强:关键词高亮与模糊匹配实现 在智能文档系统日益普及的今天,用户早已不再满足于“搜到一堆相关文件”——他们想要的是立刻看到答案。尤其是在使用像 anything-llm 这类基于检索增强生成(RAG)架构的AI助手时࿰…
DeepSeek-Coder vs Copilot:嵌入式开发场景适配性对比实战
DeepSeek-Coder vs Copilot:嵌入式开发场景适配性对比实战摘要随着人工智能技术的飞速发展,智能编程助手已成为开发者提升效率的重要工具。在嵌入式开发这一对性能、资源约束和底层硬件操作有严苛要求的领域,选择合适的智能编程助手显得尤为关…