贴一下我的,dfs每个节点返回一个arr arr[0]:自己可能被染的情况下,以自己为根的子树最多能染色多少个节点 arr[1]:自己一定不被染的情况下,以自己为根的子树最多能染色多少个节点 显然有个隐含条件是arr[0] >= arr[1](因为条件更宽松,所以可能染得肯定更多) 那么每个节点汇总信息的时候,自己一定不被染的情况就是各子树被染节点最多的情况的和,因为arr[0]>=arr[1],所以只加arr[0]就可以。 自己被染色,那最多只能和一个子节点一起被染,假设和子节点A一起染,最后的结果是(A[1] + 2)+ ∑(所有子节点 \ A)[0] 我们要找到子节点里能和自己构成完全平方数,且 A[1] + 2 - A[0] 最大的那个节点,遍历的时候记录最大值,最后累加到自己的[1]上就可以。即(A[1] + 2 - A[0] + ∑所有子节点[0] == A[1] + 2 + ∑(所有子节点 \ A)[0])
点赞 评论

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
牛客网
牛客企业服务