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

A21138. 小杨的智慧购物小杨的班级要举办一个环保⼿⼯作品展览,⽼师请小杨去⽂具店购买M种不同的⽂具(例如:铅笔、橡⽪、尺⼦等)。商店⾥共有N件⽂具,每件⽂具都有一个种类编号(1到M)和价格。小杨的预算有限,他想了一个聪明的办法:对于每种⽂具,他只买最便宜的那一件(如果同种⽂具有多件价格相同且都是最便宜的,他只会购买其中的一件)。请你帮小杨计算出,买齐这M种⽂具一共需要花费多少钱。

填空题 中等

题目描述

小杨的智慧购物

小杨的班级要举办一个环保⼿⼯作品展览,⽼师请小杨去⽂具店购买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

参考答案

#include <iostream> #include <cstring> using namespace std; int min_price[10005] int main() { int M, N; cin >> M >> N; int min_price[100005]; for (int i = 0; i <= M; i++) min_price[i] = 100000000; for (int i = 0; i < N; ++i) { int K, P; cin >> K >> P; min_price[K] = min(min_price[K], P); } int total_cost = 0; for (int k = 1; k <= M; ++k) { total_cost += min_price[k]; } cout << total_cost; return 0; }
上一题 下一题