蘑菇宴(二)
import sys
class Dish:
def __init__(self, if_has_mushroom, price):
self.if_has_mushroom = if_has_mushroom
self.price = price
n, m, k = map(int, input().split())
s = input()
a = list(map(int, input().split()))
dishes = [Dish(False, 0) for _ in range(n)]
for i in range(n):
if s[i] == '0':
dishes[i].if_has_mushroom = False
elif s[i] == '1':
dishes[i].if_has_mushroom = True
for i in range(n):
dishes[i].price = a[i]
# for dish in dishes:
# print(f"if_has_mushroom={dish.if_has_mushroom}, price={dish.price}")
dishes = sorted(dishes, key=lambda x: x.price, reverse=False)
cumsum_dishes_number_has_mushroom=0
cumsum_total_price=0
cumsum_dishes_ordered=0
for dish in dishes:
if dish.if_has_mushroom:
if cumsum_dishes_number_has_mushroom+1<=m:
cumsum_total_price += dish.price
cumsum_dishes_number_has_mushroom+=1
cumsum_dishes_ordered+=1
else:
continue
else:
cumsum_total_price += dish.price
cumsum_dishes_ordered+=1
if cumsum_dishes_ordered==k:
break
if cumsum_dishes_ordered==k:
print(f"{cumsum_total_price}")
else:
print(-1)
作者:4fbd81e
链接:https://www.nowcoder.com/exam/test/81688511/submission?examPageSource=Company&pid=55243670&testCallback=https%3A%2F%2Fwww.nowcoder.com%2Fexam%2Fcompany&testclass=%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91
来源:牛客网
作者:4fbd81e
链接:https://www.nowcoder.com/exam/test/81688511/submission?examPageSource=Company&pid=55243670&testCallback=https%3A%2F%2Fwww.nowcoder.com%2Fexam%2Fcompany&testclass=%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91
来源:牛客网
借助上述的思路,采用不建类的方式
import sys
# 读取输入
n, m, k = map(int, input().split())
s = input()
a = list(map(int, input().split()))
# 初始化一个列表存储每道菜的信息
dishes = []
# 设置蘑菇信息和价格信息
for i in range(n):
has_mushroom = (s[i] == '1')
price = a[i]
dishes.append((has_mushroom, price))
# 将菜品按价格升序排序
dishes.sort(key=lambda x: x[1])
cumsum_dishes_number_has_mushroom = 0
cumsum_total_price = 0
cumsum_dishes_ordered = 0
for has_mushroom, price in dishes:
if has_mushroom:
if cumsum_dishes_number_has_mushroom + 1 <= m:
cumsum_total_price += price
cumsum_dishes_number_has_mushroom += 1
cumsum_dishes_ordered += 1
else:
continue
else:
cumsum_total_price += price
cumsum_dishes_ordered += 1
if cumsum_dishes_ordered == k:
break
if cumsum_dishes_ordered == k:
print(cumsum_total_price)
else:
print(-1)