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

洛谷题目:P1208 [USACO1.3] 混合牛奶 Mixing Milk 题解(本题简)

介绍:

前言:

给定牛奶总需求量、若干奶农各自的牛奶单价与最大供货量,在采购总量≥需求的前提下,让我们来求出采购牛奶的最小总花费。

#解题思路步骤:

1、明确问题的规则与核心:

1.1、题目中给的每日牛奶的总需求量 n , m个奶农 ,每个奶农呢有固定牛奶单价,最大的时候可以供应奶量,并且呢可以任意里采购不超过奶农上线整数牛奶,求它们凑够 n 总量的最小采购总费用。

1.2、从这道题捏其实不难看出这不就是经典的弹性问题嘛,就是优先购买单价最!便宜的牛奶并且保证总花费是最!低的。

1.3、这道题不考虑暴力枚举所有采购的组合,时间复杂度高啊,题中的规模那肯定是不行的啦。

2、手把手采拆分步骤:

2.1、输入:读入总需求 n, 提供牛奶的农民个数为 m ,并且循环 m 次读取每个奶农的一个单价和供应链并存入结构体的数组。

2.2、进行排序:我们将所有的奶农结构体按照 price 来进行从小到大的升序排列,可以保证便宜货排在前面。

2.3、进行遍历采购:1️⃣如果剩余需求量的 remain 已经为 0 了,那我们就直接跳出循环结束采购。2️⃣当前的奶农的全部产量剩下的需求:全部买下,总花费 += 单价的供应量,剩余的来减去该奶农的所有产量。3️⃣当前奶农全部的产量 > 生育需求,那我们只卖剩下需要的量,总华为 += 单价剩余需求,剩余的需求置于0。

2.4、最后就是输出了:我们直接打印总花费ok完成啦!我俩真厉害!

##复杂度:

1、时间复杂度:

O(m log m)。

2、空间复杂度:

O(m)。

###代码:

#include <iostream> #include <vector> #include <algorithm> using namespace std; // 存储每个奶农的单价和供应量 struct Farmer { int price; int amount; }; // 排序比较函数:单价升序,优先买便宜的 bool cmp(const Farmer &a, const Farmer &b) { return a.price < b.price; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int need, m; cin >> need >> m; vector<Farmer> farmers(m); for (int i = 0; i < m; ++i) { cin >> farmers[i].price >> farmers[i].amount; } // 按单价从小到大排序 sort(farmers.begin(), farmers.end(), cmp); long long ans = 0; int remain = need; for (auto &f : farmers) { if (remain <= 0) break; // 当前奶农全部能买下 if (f.amount <= remain) { ans += 1LL * f.price * f.amount; remain -= f.amount; } else { // 只买需要的部分 ans += 1LL * f.price * remain; remain = 0; } } cout << ans << endl; return 0; }

--- 感谢观看---

制作:Code.小亦
代码提供:Code.小亦
题目思路部分提供:无

代码部分思路提供:无

知识共享:无

知识查找来源:无

初审:Code.小亦。

终审:Code.小亦。

本文章属于原创作品,禁止任何人进行转载,除合作之外!!

如在阅读中发现知识性错误、代码错误、错别字错误等情况私信博主或评论或通过邮箱2952104443@qq.com。

另:题目来源:首页 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

特:本文章/专栏在知乎网站合规授权发布。

http://www.cnnetsun.cn/news/3414007.html

相关文章:

  • Codex APP 全栈开发协作者:Node.js+Git+VS Code 深度集成指南
  • Thinking Machines 披露未来技术路线:押注内核级原生实时多模态;AI 潮玩硬件厂商珞博智能完成亿元级 Pre-A 轮融资丨日报
  • 十分钟高效训练:激活核心肌群,改善身体机能与姿态
  • LangChain安全数据库交互:SQL Agent工程化落地指南
  • RAG的三次进化:从朴素检索到Agentic RAG
  • 2026年呼叫中心系统选型避坑指南:本地部署与云原生方案的成本与安全对比
  • VSCode 多光标与批量编辑:从基础操作到实战提效
  • 游戏开发中的A*寻路算法:从原理到C++高效实现与优化
  • DLAI 医疗人工智能笔记(一)
  • DS18B20温度传感器:单总线通信全解析
  • 免费分享几千款5000G游戏资源 安卓单机游戏 支持手机平板可用安卓游戏网盘下载
  • Unity赛车游戏赛道设计:5分钟用Curvy Splines快速生成与OBJ导出
  • Arduino Uno驱动蜂鸣器:从《大鱼》到自定义乐谱的编程实践
  • MCU串口通信与工业接口设计实战指南
  • Pandas数据处理实战:从环境搭建到完整数据分析案例
  • 腾讯混元Hy3模型实战:MoE架构与Agent能力开发指南
  • 架构整理 完美架构?
  • 手机号到QQ号查询:基于协议逆向工程的Python技术实现与架构解析
  • OpenAI Codex CLI完整教程:从环境配置到MCP协议集成实战
  • 从拆解到通解:攻克1/(1+x^4)不定积分的三种思维路径
  • wsl磁盘迁移
  • 基于RT-Thread Studio与GUI Guider,从零构建LVGL应用界面
  • Subtitle Edit:免费开源字幕编辑神器,轻松制作专业级字幕
  • 利用Optuna实现CatBoost模型超参数优化与可视化分析
  • 163MusicLyrics:5分钟搞定网易云和QQ音乐歌词下载的终极免费方案
  • 稳压管工作原理与电路设计全解析
  • RimWorld终极角色定制指南:3步安装EdB Prepare Carefully模组,打造完美开局团队
  • 大语言模型技术选型指南:从核心能力到实战部署
  • GitHub Copilot 深度解析:从代码补全到AI协同开发范式
  • 【电路】电容(二)——滤波电容的选型与实战