【题目描述】
政府邀请了你在火车站开饭店,但不允许同时在两个相连接的火车站开。
任意两个火车站有且只有一条路径,每个火车站最多有50个和它相连接的火车站。
告诉你每个火车站的利润,问你可以获得的最大利润为多少。
例如下图是火车站网络:

最佳投资方案是在1,2,5,6这4个火车站开饭店可以获得利润为90
【输入格式】
第一行输入整数N(<=100000),表示有N个火车站,分别用1,2。。。,N来编号。
接下来N行,每行一个整数表示每个站点的利润,接下来N-1行描述火车站网络,每行两个整数,表示相连接的两个站点。
【输出格式】
输出一个整数表示可以获得的最大利润
【样例数据】
input
6
10
20
25
40
30
30
4 5
1 3
3 4
2 3
6 4
output
90
【数据规模与约定】
时间限制:1s
空间限制:256MB
【解析】
这个火车站其实是一棵树,我们用f[i][1]表示以i为根的树中开饭店的最大利润(包括根),f[i][0]表示以j为根的树中开饭店的最大利润(不包括根)。如果i开了饭店,则它的儿子就不能开了,否则,它的儿子可开可不开,所以我们可以推出状态转移

在政府邀请在火车站开设饭店的问题中,利用树形动态规划(DP)方法解决如何获得最大利润。每个火车站有最多50个相邻站,不能在相连接的车站同时开设饭店。通过输入每个车站的利润和网络连接,计算得出最大利润为90。状态转移方程为:f[i][1]=∑f[e[i].y][0]+value[i] 和 f[i][0]=∑max(f[e[i].y][1],f[e[i].y][0]),通过深度优先搜索(DFS)遍历所有节点来求解。"
84846132,7911896,AttnGAN:利用注意力机制的细粒度文本到图像生成,"['计算机视觉', '深度学习', '生成对抗网络', '自然语言处理', '图像生成']
最低0.47元/天 解锁文章
1198

被折叠的 条评论
为什么被折叠?



