AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3131. 贪心歌手

中等通过率 58% · 提交 398 · 通过 231
贪心模拟数学

小慕准备从 A 城前往 B 城参加一场演出。 1. 按照合同,他必须在 T 天内到达。 2. 小慕的行程会经过 N 座城市。 3. 小慕不能走回头路。 4. 每两座城市之间需要的天数,小慕已经提前了解清楚。 5. 小慕在每座城市都可以在路边卖唱赚钱。经过调研,他提前知道了每座城市卖唱的。如果在一座城市第一天卖唱可以赚 M,之后每天的收入会减少 D(第二天赚 M-D,第三天赚 M-2D……)。如果收入降到 0,就不会再减少了。 6. 小慕到达一座城市后的第二天才能开始卖唱。。 问贪心的小慕最多可以赚多少钱?

提示:带虚线的词点一下有通俗解释。

输入描述

<p> 第一行两个数字 T 和 N,中间用空格隔开,T 代表总天数; </p> <p> N 代表路上经过 N 座城市; </p> <p> 0 < T < 1000,0 < N < 100 </p> <p> 第二行 N+1 个数字,中间用空格隔开,代表每两座城市之间耗费的时间,其总和<=T。 </p> <p> 接下来 N 行,每行两个数字 M 和 D,中间用空格隔开。代表每个城市的收入预期。 </p> <p> 0 < M < 1000,0 < D < 100 </p>

输出描述

一个数字。代表歌手最多可以赚多少钱。以回车结束

示例

示例 1

输入

10 2
1 1 2
120 20
90 10

输出

540

说明:总共 10 天,路上经过 2 座城市。 路上共花 1+1+2=4 天。 剩余 6 天最好的计划是在第一座城市待 3 天,在第二座城市待 3 天。 在第一座城市赚的钱:120 + 100 + 80 = 300 在第二座城市赚的钱:90 + 80 + 70 = 240 共 300 +240 = 540

示例 2

输入

10 3
1 1 2 3
120 20
90 10
100 20

输出

320

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
天数 A城 城市1 城市2 B城 1天 1天 2天 卖3天 卖3天 样例解释:T=10, N=2 总天数10,路上消耗4天,剩余6天可卖唱 城市1: M=120, D=20 → 3天赚300 城市2: M=90, D=10 → 3天赚240 最优:各卖3天,共赚540
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「贪心歌手」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。