OD C卷 - 贪心的歌手

贪心的歌手(200)

  • 一个歌手从A城去B城参加演出,必须在T天内到达,不能往回走;
  • 途经的每座城市都可以卖唱挣钱,在一座城市的第一天卖唱可以挣M,第二天挣M-D,后续每天都减少D,直到收入减少到0;
  • 歌手到达一座城市后的第二天才可以卖唱,且卖唱后的第二天才可以出发;
  • 贪心的歌手[卖唱]最多可以挣多少钱。
    输入描述:
    第一行输入T N, T为总天数(0,1000),N为路上经过的N座城市(0,100)
    第二行输入N+1个数字,表示每两座城市之间的耗时,总和<= T
    后续N行,每行输入 M D,表示每个城市的收入预期,M在(0,1000) 之间-> D在(0, 100)之间;
    输出描述:
    歌手最多可以赚的钱

示例1
输入:
10 2
1 1 2
120 20
90 10
输出:
540
说明:
总共10天时间,路上花费要4天,还有6天可以用来卖唱;
在第一座城市卖唱3天,赚钱120 + 100 + 80 = 300
在第二座城市卖唱3天,赚90 + 80 + 70 = 240
共计:300 + 240 = 540


# 输入总天数t, 中间经过的城市个数n
t, n = list(map(int, input().strip().split()))
# 输入城市间行程 耗费的时间
days_on_way = list(map(int, input().strip().split()))
# 供卖唱的天数
days_for_sing = t - sum(days_on_way)

# 输入中间经过的每个城市的挣钱的 M  D
matrix = []
for i in range(n):
    matrix.append(list(map(int, input().strip().split())))
print(matrix)
# 列出经过的每个城市每天卖唱的钱
money_list = []
for i in range(n):
    m, d = matrix[i]
    j = 0
    while True:
        if j >= days_for_sing or m <= 0:
            break
        else:
            money_list.append(m)
            m -= d  # 挣钱 减少
            j += 1  # 天数增加

# money_list 降序排序
money_list.sort(key=lambda i : -i)
print(money_list)
# 按照卖唱的天数,从最大依次取钱
result = 0
i = 0
while True:
    if i >= days_for_sing:
        break
    else:
        result += money_list[i]
        i += 1

print(result)

 

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值