华为OD机试真题-寻找最富裕的小家庭-2023年OD统一考试(C卷) --Python--开源

题目:
在这里插入图片描述

考察内容:
dict–update—for + sum + max
代码:

"""
题目分析:

输入:
N  int 1,1000 成员总数
list len(list)=N int 1, 1000000 财富值
N-1行, N1 N2, N1是N2的父节点
输出;
最富裕的小家庭的财富和

eg:
4
100 200 300 500
1 2
1 3
2 4

4
100 200 300 500
1 2
1 3
1 4

思路:
父节点, 用字典update
for + sum + max

"""

N = int(input())
sum_list = list(map(int, input().split()))
res = dict()
# 将父亲关系,通过字典映射,财富,key=父亲,value=儿子,通过列表表示
for _ in range(N-1):
    a, b = map(int, input().split())
    # 获取对应财富
    rich_a = sum_list[a-1]
    rich_b = sum_list[b-1]
    # 将儿子属于同一个父亲的,归到一类
    if rich_a in res:
        # 有相同的建,会直接替换成update的值
        temp = res[rich_a]
        temp.append(rich_b)
        res.update({rich_a: temp})
    else:
        res.update({rich_a: [rich_b]})

print(res)
total = 0
for key, value in res.items():
    total = max(total, key + sum(value))
print(total)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值