测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A22164. ⼩杨的智慧购物

填空题 中等
知识点

题目描述

⼩杨的智慧购物

题目描述

小杨的班级要举办一个环保手工作品展览,老师请小杨去文具店购买 M种不同的文具(例如:铅笔、橡皮、尺子等)。

商店里共有N件文具,每件文具都有一个种类编号(从1到 M)和价格。

小杨的预算有限,他想了一个聪明的办法:对于每种文具,他只买最便宜的那一件(如果同种文具有多件价格相同且都是最便宜的,他只会购买其中的一件)。请你帮小杨计算出,买齐这M种文具一共需要花费多少钱。

输入格式

第一行两个正整数M,N,代表文具的种类数和总数。

之后N行,每行两个正整数Ki和Pi,分别代表第i件文具的种类编号和它的价格。数据保证每个种类至少有一件文具可供购买。

输出格式

输出一行,代表购买文具的总价。

样例

输入样例

2 5
1 1
1 2
1 1
2 3
2 10

输出样例

4

样例解释

⽂具清单如下:

  • ⽂具 1:种类 1,价格 1
  • ⽂具 2:种类 1,价格 2
  • ⽂具 3:种类 1,价格 1
  • ⽂具 4:种类 2,价格 3
  • ⽂具 5:种类 2,价格 10

小杨的选择过程:对于种类1:有三件商品,价格分别为1,2,1。其中最便宜的价格是1。对于种类2:有两件商品,价格分别为3,10。其中最便宜的价格是3。

计算总价:小杨购买这两类文具的总花费为1+3=4。

数据范围

对于所有测试点,保证1≤M≤N≤105,1≤Ki≤M,1≤Pi≤103

参考答案

# 首先接收商品种类数与商品总数 M, N = map(int, input().split()) # 记录各类商品的最低价格,初始化的时候先初始化为正无穷 min_price = [float('inf')] * (M + 1) # 遍历每一个商品 for _ in range(N): # 得到商品类别和商品的价格 k, P = map(int, input().split()) # 更新该类商品的最低价 min_price[k] = min(min_price[k], P) # 将各类商品的最低价相加得到最后的结果 print(sum(min_price[1:M+1]))
上一题 下一题