[cf1485e]Move and Swap(dp)
看起来很像树形dp,如果没有交换操作的话,显然有dp[u]=max(dp[v])+max(abs(a1[u']-a1[u]))其中v为u的儿子,u'与u处于同一深度。然后考虑交换操作可能会怎样影响结果。假如是u'和u交换,用于更新dp[u],那么计算出的结果应该是dp[u]=max(dp[v'])+abs(a1[u']-a1[u])。这样思路就有了,连边后首先做一次深搜,记录每个节点的深度,每层的最大值和最小值。再将节点按深度从大到小排序做,因为由上面第二个方程可以看出,我们不仅需要每个节点最大儿子
原创
2021-02-13 09:55:36 ·
1356 阅读 ·
0 评论