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

洛谷 B4452:[GESP202512 四级] 优先购买 ← 结构体排序

【题目来源】
https://www.luogu.com.cn/problem/B4452

【题目描述】
小 A 有 M 元预算。商店有 N 个商品,每个商品有商品名 S、价格 P 和优先级 V 三种属性,其中 V 为正整数,且 V 越小代表商品的优先级越高。
小 A 的购物策略为:
(1)总是优先买优先级最高的东西;
(2)如果有多个最高优先级商品,购买价格最低的;
(3)如果有多个优先级最高且价格最低的商品,购买商品名字典序最小的。
小 A 想知道能购买哪些商品。

【输入格式】
第一行两个正整数 M,N,代表预算和商品数。
之后 N 行,每行一个商品,依次为 Si  Pi  Vi,代表第 i 个商品的商品名、价格、优先级。
数据保证不存在两个名字相同的商品。

【输出格式】
按照字典序从小到大的顺序,输出所有购买商品的商品名。

【输入样例】
20 4
apple 6 8
bus 15 1
cab 1 10
water 4 8

【输出样例】
bus
cab
water

【数据范围】
对于所有测试点,保证 1≤∣Si∣≤10,1≤M,Pi≤10^5,1≤N≤10^3,1≤Vi≤10。商品名仅由小写字母组成且不存在两个相同的商品名。

【算法分析】
● 按结构体某一字段对结构体数组进行排序:https://blog.csdn.net/hnjzsyjyj/article/details/120184972

● 本题需进行两次排序。

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int maxn=1e3+5;
struct Goods {string s;int p;int v;
} t[maxn];bool cmp(Goods x,Goods y) {if(x.v!=y.v) return x.v<y.v;else if(x.p!=y.p) return x.p<y.p;else return x.s<y.s;
}int main() {int m,n;cin>>m>>n;for(int i=1; i<=n; i++) {cin>>t[i].s>>t[i].p>>t[i].v;}sort(t+1,t+1+n,cmp);vector<string> v;for(int i=1; i<=n; i++) {if(m>=t[i].p) {m-=t[i].p;v.push_back(t[i].s);}}sort(v.begin(),v.end());for(auto x:v) cout<<x<<endl;return 0;
}/*
in:
20 4
apple 6 8
bus 15 1
cab 1 10
water 4 8out:
bus
cab
water
*/

 

 

【参考文献】
https://mp.weixin.qq.com/s/sWxpISqwh2OfFGjqVIn1PQ
https://blog.csdn.net/jht0105/article/details/135998672
https://blog.csdn.net/m0_69389639/article/details/146261239

 

http://www.jsqmd.com/news/177376/

相关文章:

  • 【并行计算高手进阶必备】:深入剖析OpenMP 5.3负载均衡底层原理
  • 代码安全新战场:WASM混淆为何让黑客束手无策?
  • 【嵌入式系统可靠性提升】:基于C语言的存算一体错误检测与恢复机制详解
  • YOLOFuse issue模板规范:提问前请按格式填写环境信息
  • Pixso国产替代:团队协作设计DDColor品牌视觉体系
  • YOLOFuse专利申请说明:核心技术保护措施
  • YOLOFuse搜索引擎图像索引优化
  • 高效、安全、可维护:用C17泛型打造工业级代码的3大核心原则
  • 【现代C++高效编程】:C17泛型如何实现零成本抽象与类型安全双赢
  • 【Z-Image-Turbo 量化模型】svdq-int4 / fp4 多版本对比与下载说明svdq-int4_r256-z-image-turbo.safetensors
  • YOLOFuse消防救援现场感知增强
  • 基于Ultralytics YOLO的YOLOFuse镜像上线,轻松部署红外+RGB目标检测
  • YOLOFuse标签复用机制解析:为何无需单独标注红外图
  • 基于Copula保险费率厘定附Matlab代码
  • 显存占用计算器:输入模型大小预估所需GPU
  • 告别孤独圣诞跨年夜,声网K歌技术打造“云上演唱会”
  • 探索Simulink中5MW永磁同步风机PMSG并网调频的奇妙世界
  • YOLOFuse训练曲线解读:loss下降缓慢可能是这些原因
  • Rust - for in 遍历数组的几种方式
  • YOLOFuse软链接修复命令:解决python命令无法执行的问题
  • YOLOFuse日志监控系统搭建:实时查看训练状态
  • YOLOFuse真实来源验证:仅认准GitHub官方仓库链接
  • 昇腾芯片开发避坑指南:3个关键C语言调试技巧你必须掌握
  • C++泛型革命(从C11到C17类型安全演进之路)
  • 为什么你的WASM代码一脱即溃?C语言混淆的3个致命盲区
  • 2025广告行业巅峰对决:领军企业全解析,地铁站广告/明星应援广告/候车亭广告/地铁广告/公交车身广告/电梯电子屏广告广告定制有哪些 - 品牌推荐师
  • 写真摄影小软件:美,从不止于定格
  • YOLOFuse发票申请流程:企业报销必备
  • C++学习笔记 46 单例模式
  • 2026昆明理工大学通信复试考察范围-F00402通信核心课程综合