Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 树划分(基于算法)_Algorithm - Fatal编程技术网

Algorithm 树划分(基于算法)

Algorithm 树划分(基于算法),algorithm,Algorithm,这是一家公司提出的编码问题: 给定一棵树,其中有N个节点和与每个节点关联的权重,以及 给定了边(在树中)。您必须删除一条边,例如 创建的两棵树的权重之和的差值最大 输入: 第一行包含N个节点数第二行包含N个整数 表示每个节点的权重,后跟显示边的N-1条线 现在 输出: 所创建树的最大权重差 例如: 输入: 第一个测试用例: 3 8 7 8 10 21 9 5 5 4 1 8 8 3 5 2 10 20 31 41 53 60 75 81 输出:7 第二个测试用例: 3 8 7 8 10

这是一家公司提出的编码问题:

给定一棵树,其中有N个节点和与每个节点关联的权重,以及 给定了边(在树中)。您必须删除一条边,例如 创建的两棵树的权重之和的差值最大

输入:

第一行包含N个节点数第二行包含N个整数 表示每个节点的权重,后跟显示边的N-1条线 现在

输出:

所创建树的最大权重差

例如:

输入:

第一个测试用例:

3
8 7 8
10
21
9
5 5 4 1 8 8 3 5 2
10
20
31
41 
53 
60
75
81
输出:
7

第二个测试用例:

3
8 7 8
10
21
9
5 5 4 1 8 8 3 5 2
10
20
31
41 
53 
60
75
81

输出:
13
(不确定此输出)

如果权重不能为负,显然最佳解决方案将是切掉一片叶子。假设总树重为S,我们可以在O(n)中找到它,如下所示:

1.ans:=0
2.对于每个顶点v,ans:=max(ans,abs(S-2*weight[v])//剩余部分和叶之间的差值

3.return ans

好的,那么你尝试了什么,失败在哪里?@OliCharlesworth我对困难的问题有点陌生,所以我没走多远……我只是试着弄清楚逻辑……我觉得我应该存储所有可能的树权重,然后找到最大值……但不确定具体如何:(权重可以是负数?@GrigorGevorgyan:不,它们大于0