LA4015,论DP中顺序的重要性

来源:互联网 发布:汽车模型设计软件catia 编辑:程序博客网 时间:2024/04/29 07:46

题目链接:http://vjudge.net/problem/UVALive-4015

树形DP,设f[u,i]为从u出发,遍历了i个点(包括u自身)的最短距离,g[u,i]表示从u出发,遍历了i个点(不包括u自身)的最短距离。

记x到y的距离为dis[x,y]

状态转移方程:

    f[x,i]:=min(f[x,i-j]+f[y,j]+dis[x,y]*2)(y是x的儿子)
    g[x,i]:=min(f[x,i-j]+g[e[p].go,j]+e[p].dis,f[e[p].go,j]+g[x,i-j]+e[p].dis shl 1)(y是x的儿子)

两个要点

1.注意顺序:一定要类似于0/1背包的顺序,否则例如将某棵子树的值使用两次,就像0/1背包中物品使用两次一样。

2.下标与值的翻转:0/1背包中下标是容量,值是答案;在这里因为边权的范围远大于点的个数,所以要反一下,否则mle+tle.

代码(pascal):http://paste.ubuntu.com/23446074/

0 0
原创粉丝点击