Algorithm 通过在每个步骤中递增asjacent节点,找到使所有树节点为零所需的最小值
问题在于找到使所有节点为零所需的最小值,我们称之为KAlgorithm 通过在每个步骤中递增asjacent节点,找到使所有树节点为零所需的最小值,algorithm,tree,nodes,Algorithm,Tree,Nodes,问题在于找到使所有节点为零所需的最小值,我们称之为K 给出了一个非二叉数树 在第一步中,可以选择一个节点开始。如果K大于该节点的值,则将该值更改为零,并增加距离为1或2的其他节点的值。请注意,一旦节点的值变为零,它将不再递增,并且不允许连接到它的节点递增 然后,您应该选择另一个节点,该节点在距离1处至少有一个零值节点,并重复该过程 例子: 当我们从值为5的叶子开始时,我们有 6 \ 3 \ 0 那么我们应该选择3;我们不能选择6,因为它在距离1中没有零节点 7 \ 0
6
\
3
\
0
那么我们应该选择3;我们不能选择6,因为它在距离1中没有零节点
7
\
0
\
0
最后我们选择7,K=7,但如果我们首先选择2,则我们有:
6
\
0
\
6
那么我们应该选择6;因为值为2的节点现在为零,所以连接被切断,通过更改值为6的节点的值,将不会再发生增量
0
\
0
\
6
所以最小K=6
我目前的做法是:
- 节点数≤ 3×105
- -109≤ 节点值≤ 109
- 时限:2.5秒
- 内存限制:256 MB
max
并计算有多少节点具有该值=>maxCount
maxCount=1
则计算有多少节点具有值max-1
=>max1Count
,有两种可能性:
max1Count=0
或值为max-1的节点的相邻节点数max
等于max1Count
=>解决方案为max
max+1
max
值的所有节点:
max
的深度仅找到一个节点:
max
的子级数等于maxCount-1
=>解决方案是max+1
max
,其子项的值max
的计数等于maxCount-2
=>解决方案也是max+1
max
的子级,但是有maxCount-1
grand子级,它们都具有相同的父级和值max
=>解决方案也是max+1
max+2
maxCount
节点,并且它们都具有相同的父节点=>则解决方案是max+1
max+2
一种简单的贪婪方法可能是将最短路径连续添加到零区域的下一个最大值。距离可能会有不同的测量方法(比如你在途中执行的增量数量)。请展示你当前的想法/方法?我编辑了我的问题,并添加了我当前的方法@Pham TrungThanks作为你的答案,但我对树木有点陌生,请你分享一个关于你的方法的链接,或者解释一下@Nico SchertlerI编辑的@范忠
0
\
0
\
6