poj 2486 树形DP

本文介绍了一个典型的树形动态规划问题——苹果树问题。该问题要求在一棵树状结构中,在不超过K步的前提下,从指定起点出发,吃掉最多的苹果。文章详细解释了输入输出格式,并给出了具体的转移方程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

/*
Apple Tree
 * Time Limit: 1000MS  Memory Limit: 65536K
 * Total Submissions: 3608  Accepted: 1074
Description
 * Wshxzt is a lovely girl. She likes apple very much. One day HX takes her to
 * an apple tree. There are N nodes in the tree. Each node has an amount of
 * apples. Wshxzt starts her happy trip at one node. She can eat up all the
 * apples in the nodes she reaches. HX is a kind guy. He knows that eating too
 * many can make the lovely girl become fat. So he doesn鈥檛 allow Wshxzt to go
 * more than K steps in the tree. It costs one step when she goes from one node
 * to another adjacent node. Wshxzt likes apple very much. So she wants to eat
 * as many as she can. Can you tell how many apples she can eat in at most K steps.
Input
 * There are several test cases in the input
 * Each test case contains three parts.
 * The first part is two numbers N K, whose meanings we have talked about
 * just now. We denote the nodes by 1 2 ... N. Since it is a tree, each
 * node can reach any other in only one route. (1<=N<=100, 0<=K<=200) The
 * second part contains N integers (All integers are nonnegative and not
 * bigger than 1000). The ith number is the amount of apples in Node i.
 * he third part contains N-1 line. There are two numbers A,B in each line,
 * meaning that Node A and Node B are adjacent.
 * Input will be ended by the end of file.
Note: Wshxzt starts at Node 1.
Output
 * For each test case, output the maximal numbers of apples Wshxzt can eat at a line.
Sample Input
2 1
0 11
1 2
3 2
0 1 2
1 2
1 3
Sample Output
11
2
Source
 * POJ Contest,Author:magicpig@ZSU

分析:

  典型树形DP,转移方程

get[0][g][i+j+2(因为返回所以走来回+2)]=max(get[0][g][i+j+2],get[0][g][i]+get[0][now][j]);//1 回到根节点
get[1][g][i+j+1(不返回走一次)]=max(get[1][g][i+j+1],get[0][g][i]+get[1][now][j]);//2_1 在now这个子树不返回
get[1][g][i+j+2(其他节点不返回,此子节点返回,走来回)]=max(get[1][g][i+j+2],get[1][g][i]+get[0][now][j]);//2_2 在now子树返回,在其他子树不返回
没啥好说的
 */

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值