寒武纪-1005 Travel(树形DP)

Posted 565261641-fzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寒武纪-1005 Travel(树形DP)相关的知识,希望对你有一定的参考价值。

一、题目链接

  http://aiiage.hustoj.com/problem.php?id=1005

二、题面

  PDF:http://aiiage.hustoj.com/upload/file/20180114/20180114145400_75397.pdf

  技术分享图片

三、思路

  正赛时,我一开始写了个感觉在O(N*N*k)的时间复杂度内做了优化的代码,交上去,TLE。尝试了各种可能的情况,还是TLE。赛后,看了官方题解。如下:

  技术分享图片

  然而,2.3的“相对直观的想法”,实在是没想到一个时间复杂度在O(N*k*k)的DP算法。

  后来,队友问了其他一位AC的同学,他给我们仔细地讲了如何做DP推导。我算是听明白了。具体如下:

  1、改掉题解中dp数组的意义。dp[i][j][k]表示:在模k意义下,到达结点i距离为j的结点的个数。

  2、修改dp的含义后,设置两个dp数组:

    dp1[3001][101][101]。dp1[i][j][k]表示在以i为根的子树中,在模k意义下到达结点i的距离为j的结点的个数。

    dp[3001][101][101]。dp[i][j][k]表示,在模k意义下,到达结点i距离为j的结点的个数。

  3、dp1数组的递推式不难想到,假设当前结点为root:dp1[root][j][k] = Σdp1[soni][j - w][k]。

 

以上是关于寒武纪-1005 Travel(树形DP)的主要内容,如果未能解决你的问题,请参考以下文章

寒武纪camp网络测试赛

寒武纪camp Day6

题解CF#Bubble Cup X - Finals E-Casinos and travel

树形dp小结

树形dp摸瞎历程

[DP总结]树形DP