优先购买 题目描述 小 A 有 M 元预算。商店有 N 个商品,每个商品有商品名 S、价格 P 和优先级 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 ≤ len(S) ≤ 10, 1 ≤ M, P ≤ 10⁵ , 1 ≤ N ≤ 10³ , 1 ≤ vi ≤ 10 。商品名仅由小写字母组成且不存在两个相同的商品名。
正确答案:参考程序(Python):M,N=map(int,input().split());items=[];for _ in range(N):s,p,v=input().split();items.append((int(v),int(p),s));items.sort();buy=[];spend=0;for v,p,s in items:if spend+p<=M:buy.append(s);spend+=p;print(' '.join(sorted(buy)))。样例→bus cab water。核心
试卷来源:202512 CCF-GESP编程能力等级认证Python四级真题