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

题解:洛谷 P5250 【深基17.例5】木材仓库

【题目来源】

洛谷:P5250 【深基17.例5】木材仓库 - 洛谷

【题目描述】

博艾市有一个木材仓库,里面可以存储各种长度的木材,但是保证没有两个木材的长度是相同的。作为仓库负责人,你有时候会进货,有时候会出货,因此需要维护这个库存。有不超过 \(100000\) 条的操作:

  • 进货,格式1 Length:在仓库中放入一根长度为 Length(不超过 \(10^9\)) 的木材。如果已经有相同长度的木材那么输出Already Exist
  • 出货,格式2 Length:从仓库中取出长度为 Length 的木材。如果没有刚好长度的木材,取出仓库中存在的和要求长度最接近的木材。如果有多根木材符合要求,取出比较短的一根。输出取出的木材长度。如果仓库是空的,输出Empty

【输入】

【输出】

【输入样例】

7
1 1
1 5
1 3
2 3
2 3
2 3
2 3

【输出样例】

3
1
5
Empty

【解题思路】

image

【算法标签】

《洛谷 P5250 木材仓库》 #集合#

【代码详解】

#include <bits/stdc++.h>
using namespace std;int n, type, length;  // n: 操作次数, type: 操作类型, length: 木材长度
set<int> a;           // 使用set存储木材长度(自动排序且去重)
set<int>::iterator it, itup;  // 迭代器用于查找和遍历int main()
{// 输入操作次数cin >> n;// 处理每个操作for (int i = 0; i < n; i++) {cin >> type >> length;// 查找当前长度是否已存在it = find(a.begin(), a.end(), length);// 操作类型1:添加木材if (type == 1) {if (it == a.end())  // 如果不存在则添加{a.insert(length);}else  // 已存在则提示{cout << "Already Exist" << endl;}}// 操作类型2:取出木材else if (type == 2) {// 处理空集合情况if (a.empty()) {cout << "Empty" << endl;}// 存在完全匹配的木材else if (it != a.end()) {cout << length << endl;a.erase(it);}// 需要找最接近的木材else {// 找到第一个大于length的木材itup = upper_bound(a.begin(), a.end(), length);// 情况1:所有木材都比length小if (itup == a.end()) {itup--;cout << *itup << endl;a.erase(itup);}// 情况2:所有木材都比length大else if (itup == a.begin()) {cout << *itup << endl;a.erase(itup);}// 情况3:需要比较前后两个木材哪个更接近else {itup--;it = itup++;if (length - *it <= *itup - length) {cout << *it << endl;a.erase(it);}else {cout << *itup << endl;a.erase(itup);}}}}}return 0;
}

【运行结果】

7
1 1
1 5
1 3
2 3
3
2 3
1
2 3
5
2 3
Empty
http://www.jsqmd.com/news/391821/

相关文章:

  • 照着用就行:千笔·降AIGC助手,继续教育论文降重神器!
  • 别再瞎找了!AI论文软件 千笔ai写作 VS 知文AI,专科生专属神器!
  • Backtrader平台下指数期权备兑策略回测完成
  • 学霸同款!万众偏爱的AI论文写作软件 —— 千笔写作工具
  • 评测三边封拉链袋,2026年这些厂商值得信赖,四边封包装袋/聚酯尼龙袋/三边封拉链袋,三边封拉链袋直销厂家排行榜 - 品牌推荐师
  • P1563 玩具谜题
  • 每次编译之后,写的代码都会消失
  • 2026年深圳好口碑氮化铝陶瓷片品牌推荐榜单 - 睿易优选
  • 协同过滤算法的Thinkphp和Laravel框架的大学生个性化兼职信息推荐系统的设计与实现
  • Thinkphp和Laravel框架的在线考试管理系统的设计与实现前台329fgzk
  • 什么是反向传播(Backpropagation,简称 BP)?
  • Thinkphp和Laravel框架的有声漫画售卖商城
  • 生产环境使用Pandas进行数据分析:从数据清洗到可视化最佳实践与性能优化
  • Thinkphp和Laravel框架汽修店汽车维修预约系统设计与实现
  • Thinkphp和Laravel框架汽车租赁业务员租聘系统设计与实现
  • Thinkphp和Laravel框架游戏商城销售分析网站设计与实现
  • Thinkphp和Laravel框架技术的体育足球篮球赛事安排运动员管理系统咨询平台设计
  • Thinkphp和Laravel框架技术的农产品购物商城网站助农管理系统的设计与实现
  • Thinkphp和Laravel框架摄影约拍系统的设计与实现聊天
  • PDF 修复
  • 2026负债人上岸指南|全国专业逾期处理律所实测推荐,信用卡逾期推荐协商律所 - 代码非世界
  • LeetCode693:交换二进制位
  • 装修必看:如何甄选窗纱一体铝门窗的可靠厂家,平移断桥提升窗/侧压平移推拉窗/铝门窗/慕莎尼奥门窗/门窗,铝门窗厂家排行 - 品牌推荐师
  • 深度学习项目训练环境效果展示:自动校验数据集完整性(图片损坏/尺寸异常)
  • mT5中文-base零样本增强模型作品:跨境电商用户评价情感中性化处理
  • 2026年船用减压阀市场:哪些品牌更受青睐?船用安全阀/船用舷侧阀/船舶配件/船用减压阀,船用减压阀厂商有哪些 - 品牌推荐师
  • gts growth.nim娱乐程序
  • 效率直接起飞! 降AI率工具 千笔·降AIGC助手 VS 云笔AI,MBA专属利器
  • 救命神器 10个降AI率网站测评:继续教育降AIGC必备工具推荐
  • 这次终于选对!9个AI论文软件深度测评,专科生毕业论文写作必备工具推荐