购买水果最便宜的方案-华为真题

有m个水果超市在1-n个小时的不同时间段提供不同价格的打折水果,如果某餐厅每个小时都要新采购一种水果给餐厅使用的话, 请选出n个小时内,采购水果的最便宜的花费总和。

(假设m个超市打折时间段可以覆盖n小时)

输入:
n — 总小时数 n
m — 水果超市个数 m
x[0] x[1] x[2] — 第2~m+1行:每行长度为3的数组,代表各超市在x[0]~x[1]小时(包含[x1])提供价格为x2的水果。

范围提示: 1 <= n < 2^10 (1024)

输出:
采购水果的最便宜的花费总和。

# 输入
4
6
2 3 10
2 4 20
1 3 15
1 4 25
3 4 8
1 4 16

# 输出
41
'''
购买水果最便宜的方案
'''

def cheapest(n, m, price):
    '''
    n: 总小时数
    m: 水果超市个数
    price: 每个水果超市的打折起止时间和价格
    price[i][0], price[i][1]: 水果超市i的打折起止时间
    price[i][2]: 水果超市i的打折价格
    ''' 
    price.sort(key = lambda x: x[2]) # 按照折扣价格排序
    min_money = 0
    for i in range(1, n+1):
        for j in range(m):
            if price[j][0] <= i and i <= price[j][1]:
                min_money += price[j][2]
                break
    return min_money


n = int(input())
m = int(input())
price = []
for i in range(m):
    price.append(list(map(int, input().split(" ")))) # price[i]: 第i个水果超市
# price = [list(map(int, input().split(" "))) for _ in range(m)]

print(cheapest(n, m, price))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值