🌟 华为OD试题注意事项
- 使用合适的编程语言,在华为OD机试中多数情况下使用C++或Java。
- 按照题目要求进行编码,仔细阅读题目描述并理解要求,在编码前可以进行伪代码编写或画流程图有助于理解和排除逻辑错误。
- 注意代码的规范性,注重代码的可读性和可维护性。
- 对于输入数据进行各种异常情况的判断。例如:输入数据格式不正确、输入数据范围不符合要求等情况(跟力扣不同)
- 在编写代码时需要注意运行效率,减少时间和空间复杂度,以提高代码的执行效率。
- 在编码完成后,进行多组数据的测试以确保程序的正确性和健壮性。
一. 🌟 题目描述
某购物城有m个商铺,现决定举办一场活动选出人气最高店铺。活动共有n位市民参与,每位市民只能投一票,但1号店铺如果给该市民发放q元的购物补贴,该市民会改为投1号店铺。 请计算1号店铺需要最少发放多少元购物补贴才能成为人气最高店铺(即获得的票数要大于其他店铺),如果1号店铺本身就是票数最高店铺,返回0。
二. 🌟 输入描述
第一行为小写逗号分割的两个整数n,m,其中第一个整数n表示参与的市民总数, 第二个整数m代表店铺总数,1 <= n, m <= 3000。
第2到n+1行,每行为小写逗号分割的两个整数p,q,表示市民的意向投票情况,其中每行的第一个整数p表示该市民意向投票给p号店铺,第二个整数q表示其改投1号店铺所需给予的q元购物补贴,1 <= p <= m, 1 <= q <= 10^9。
不考虑输入的格式问题。
三. 🌟 输出描述
1号店铺需要最少发放购物补贴金额。
示例一
输入
5,5
2,10
3,20
4,30
5,40
5,90
输出
50
说明
有5个人参与,共5个店铺。
如果选择发放 10元+20元+30
这篇博客介绍了华为OD试题中的一个问题——如何计算1号店铺最少需要发放多少元购物补贴才能成为人气最高的店铺。文章详细阐述了题目的描述、输入输出要求,并提供了示例解答。此外,还讲解了递归、回溯、排序、哈希表和动态规划等算法在解决此问题中的应用。
订阅专栏 解锁全文
3858

被折叠的 条评论
为什么被折叠?



