Re: [闲聊] 每日leetcode

楼主: DJYOMIYAHINA (通通打死)   2025-05-23 11:57:26
今天这题之前写过
做一次operation,原本是指对edge的两个node同时做xor with k
但其实可以把operation给转换成: 对tree的任两个node同时做xor with k
原因是当任两个node有connect
只要对path上所有edge的端点node都做一次operation
就会等于对这任两点做xor with k了
所以这题可以转换成
对所有node做总共偶数次xor with k,能得到的最大sum是多少
用dp就可以结束惹
def maximumValueSum(self, nums, k, edges):
"""
:type nums: List[int]
:type k: int
:type edges: List[List[int]]
:rtype: int
"""
maximum_odd_cur = nums[0]^k
maximum_even_cur = nums[0]
for i in range(1, len(nums)):
maximum_odd_cur, maximum_even_cur = max(maximum_even_cur+(nums[i]^k),
maximum_odd_cur+nums[i]), max(maximum_odd_cur+(nums[i]^k), maximum_even_cur+
nums[i])
return maximum_even_cur
作者: oin1104 (是oin的说)   2025-05-23 12:01:00
大师 我看超久没想到这解法
楼主: DJYOMIYAHINA (通通打死)   2025-05-23 12:03:00
我看答案的 对不起上次解这题的时候是看答案ㄉ
作者: sustainer123 (caster)   2025-05-23 12:11:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com