# 猴子拿香蕉问题 按照输入顺序,输出猴子拿到的香蕉重量
# 思路:对香蕉由大到小排列。对猴子建类,存储id,体重,拿到的香蕉重量(part初始为0)
# 对猴子按照体重由大到小排列,在类里面自定义排序。
# 分香蕉:用i%m分,monkeys[i%m].part+=banana[i]
# 分完后,再按照id,即输入顺序由小到大重新排列,输出part
# 输入:5 3
# 1 2 3 4 5 输出:7 5 3
# 3 2 1
class Monkey:
def __init__(self,id,weight,part):
self.id=id
self.weight=weight
self.part=part
n,m=map(int,input().split()) # n只香蕉,m只猴子
banana=list(map(int,input().split())) # 输入香蕉重量
monkey=list(map(int,input().split())) # 输入猴子体重
banana.sort(reverse=True) # 降序排列
monkeys=[]
for i in range(m):
monkeys.append(Monkey(i+1,monkey[i],0)) # 初始化猴子列表,元素为对象。part初始化为0
monkeys.sort(key=lambda x:x.weight,reverse=True) # 对猴子按体重降序排列
for i in range(n): # 开始分香蕉
monkeys[i%m].part+=banana[i]
monkeys.sort(key=lambda x:x.id) # 分完后再次按照输入顺序编号排序
for i in range(m):
print(monkeys[i].part,end=' ')
猴子分香蕉问题(python)
最新推荐文章于 2025-05-16 14:49:58 发布