STL--贪心算法
题目描述新年快到了笑笑打算给他的好朋友们发贺年卡而且他已经选好了自己要购买的贺卡的样式。俗话说得好货比三家笑笑来到商店看了各个商铺这种贺卡的价钱。不仅如此笑笑还记住了每个商铺的存货量。已知笑笑打算购买 mm 张贺卡问他最少花多少钱。输入第一行两个整数 mm 和 nn 。其中 mm 表示要购买的贺卡的数量nn 表示商铺的个数。以下 nn 行每行两个整数分别表示该商铺这种贺卡的单价和存货量。输出仅一个数表示笑笑花的最少钱数。样例输入10 4 4 3 6 2 8 10 3 6输出36数据规模0m,n≤10000m,n≤1000每个商铺贺卡单价在 1∼1001∼100 之间数量在 1∼10001∼1000 之间输入保证商铺的总存货量不少于 mm 。这道题是非常经典的贪心算法入门题核心思路就是「优先买单价最便宜的商铺的贺卡把便宜的买光再买下一家稍贵的」贪心Greedy Algorithm是编程里一种非常直观的算法思想核心可以用一句话概括在每一步决策的时候都选择当前局部看来最优的选项期望通过每一步的局部最优最终得到全局的最优解。#includeiostream #includevector #includealgorithm //STL sort头文件必须引入 using namespace std; //自定义结构体存储每个商铺的单价和存货量 struct Shop{ int price; int stock; }; int main(){ int m, n; cin m n; vectorShop shops(n); //用STL的vector存储所有的商铺数据 for(int i 0; i n; i){ cin shops[i].price shops[i].stock; } sort(shops.begin(),shops.end(),[](const Shop a,const Shop b){ return a.price b.price; }) ; int total_cost 0; //记录总花费 int remaining m; //还需购买 for(int i 0; i n; i){ int buy_num min(remaining, shops[i].stock); total_cost buy_num * shops[i].price; remaining - buy_num; if(remaining 0) break; } cout total_cost endl; return 0; }sort(shops.begin(), shops.end(), 自定义比较函数)是STL sort的标准用法前两个参数是排序的起止迭代器第三个参数是你自己定义的排序规则这里用C11的lambda表达式写非常简洁作用就是告诉sort“按price小的排在前面”。// 函数返回值是bool也就是只能返回true或者false // 两个参数a和b就是sort每次拿来比较的两个商铺对象加const 是为了不拷贝、不修改数据你现在可以先理解成固定写法 bool 我判断两个商铺谁在前(Shop a, Shop b) { // 我明明白白告诉sort如果a的单价 b的单价 → 就返回true代表a应该排在b左边前面 return a.price b.price; }你也可以不用lambda单独写一个比较函数效果完全一样bool compare(const Shop a, const Shop b) { return a.price b.price; } // sort调用时写 sort(shops.begin(), shops.end(), compare);具体代码如下#include iostream #include algorithm using namespace std; // 先定义商铺的结构体 struct Shop { int price; // 单价 int stock; // 存货 }; // 就写这个最朴素的比较函数没有任何新语法 bool cmp(Shop a, Shop b) { // 规则单价小的排在前面 return a.price b.price; } int main() { int m, n; cin m n; Shop shops[1005]; for(int i0; in; i) { cin shops[i].price shops[i].stock; } // 把cmp传给sortsort就会按单价从小到大排好所有商铺 sort(shops, shops n, cmp); // 接下来直接贪心买就完事 int totalCost 0; for(int i0; in; i) { if(m 0) break; // 当前店的货够买剩下的所有直接买完结束 if(shops[i].stock m) { totalCost m * shops[i].price; m 0; } else { // 把这家店的货全买空 totalCost shops[i].stock * shops[i].price; m - shops[i].stock; } } cout totalCost endl; return 0; }

相关新闻

附近服务找不到?本地门店如何优化AI搜索推荐?

附近服务找不到?本地门店如何优化AI搜索推荐?

很多经营本地生活服务的商家最近发现一个现象:当用户直接向AI询问“附近哪家咖啡店好”或者“周边哪个家政靠谱”时,自家的门店却总是出现在推荐列表之外。即使门店在传统搜索引擎中排名尚可,但在生成式AI的问答中,似乎成了“隐形…

2026/8/2 12:31:26 阅读更多 →
中介数据频繁流失?房管家ACN私有化部署筑牢数据安全壁垒

中介数据频繁流失?房管家ACN私有化部署筑牢数据安全壁垒

对于房产中介而言,房源、客源、客户跟进记录就是门店的核心资产,更是门店生存发展的生命线。但行业普遍存在一个致命难题:员工离职带走客户、房源资源,核心数据随意外泄,门店多年积累的资产瞬间流失。很多门店做了多年…

2026/7/30 21:01:24 阅读更多 →
CANBridge-Ex 在煤矿防爆变频器中的应用

CANBridge-Ex 在煤矿防爆变频器中的应用

一、案例概述煤矿井下工作面普遍存在瓦斯、煤尘等爆炸性气体环境,对电气设备的防爆安全性提出了极为严苛的要求。防爆变频器作为煤矿综采、掘进、运输等核心设备的动力驱动单元,其通讯接口的本质安全设计直接关系到整套系统的安全运行。CANBridge-Ex 隔离…

2026/8/1 12:52:48 阅读更多 →

最新新闻

【导弹】基于matlab 6自由度导弹制导、导航与控制模拟【含Matlab源码 15917期】

【导弹】基于matlab 6自由度导弹制导、导航与控制模拟【含Matlab源码 15917期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…

2026/8/3 4:39:15 阅读更多 →
企业级异步子代理部署实战:5种高可用架构方案深度解析

企业级异步子代理部署实战:5种高可用架构方案深度解析

企业级异步子代理部署实战:5种高可用架构方案深度解析 【免费下载链接】pi-subagents Pi extension for async subagent delegation with truncation, artifacts, and session sharing 项目地址: https://gitcode.com/GitHub_Trending/pi/pi-subagents pi-su…

2026/8/3 4:39:15 阅读更多 →
你的下载管理革命:为什么AB Download Manager能让文件整理变得如此简单?

你的下载管理革命:为什么AB Download Manager能让文件整理变得如此简单?

你的下载管理革命:为什么AB Download Manager能让文件整理变得如此简单? 【免费下载链接】ab-download-manager A Download Manager that speeds up your downloads 项目地址: https://gitcode.com/GitHub_Trending/ab/ab-download-manager 你是否…

2026/8/3 4:39:15 阅读更多 →
SPT-AKI存档编辑器:终极塔科夫离线版存档管理工具

SPT-AKI存档编辑器:终极塔科夫离线版存档管理工具

SPT-AKI存档编辑器:终极塔科夫离线版存档管理工具 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/gh_mirrors/sp/SP…

2026/8/3 4:39:15 阅读更多 →
Python学习新思维:从零到项目实战,构建问题解决能力

Python学习新思维:从零到项目实战,构建问题解决能力

你是不是也刷到过那种标题——“七天从小白到大神”“学完即可就业”“最全零基础教程”?点进去一看,几十上百个小时的视频,从安装Python讲到人工智能,感觉什么都讲了,又感觉什么都没记住。收藏夹里塞满了,…

2026/8/3 4:39:14 阅读更多 →
【导弹】6自由度导弹制导、导航与控制模拟【含Matlab源码 15917期】

【导弹】6自由度导弹制导、导航与控制模拟【含Matlab源码 15917期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…

2026/8/3 4:38:14 阅读更多 →

日新闻

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/8/3 0:00:47 阅读更多 →
[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…

2026/8/3 0:00:47 阅读更多 →
[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…

2026/8/3 0:00:47 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →