POJ 2486 Apple Tree (树形dp 经典题)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=105;
int head[maxn<<1],to[maxn<<1],val[maxn],nex[maxn<<1];
int F[maxn][maxn<<1],G[maxn][maxn<<1];
int cnt,V;
void addedge(int u,int v){
nex[++cnt]=head[u],head[u]=cnt,to[cnt]=v;
}
void init(){
memset(F,0,sizeof(F));
memset(G,0,sizeof(G));
memset(head,0,sizeof(head));
memset(nex,0,sizeof(nex));
cnt=0;
}
void dfs(int u,int fa){
//for(int i=0;i<=V;++i)F[u][i]=G[u][i]=val[u];
G[u][0]=F[u][0]=val[u];
for(int v=head[u];v;v=nex[v])if(to[v]!=fa){
dfs(to[v],u);
for(int j=V;j>=0;--j)
for(int k=0;k<=j;++k){
if(k>=2)G[u][j]=max(G[u][j],G[u][j-k]+G[to[v]][k-2]);
if(k>=2)F[u][j]=max(F[u][j],F[u][j-k]+G[to[v]][k-2]);
F[u][j]=max(F[u][j],G[u][j-k]+F[to[v]][k-1]);
}
}
}
int main(){
int n;
while(scanf("%d%d",&n,&V)!=EOF){
init();
for(int i=1;i<=n;++i)scanf("%d",&val[i]);
for(int i=1;i<n;++i){
int a,b;
scanf("%d%d",&a,&b);
addedge(a,b);
addedge(b,a);
}
dfs(1,-1);
int ans=0;
for(int i=0;i<=V;++i)ans=max(ans,F[1][i]);
printf("%d\n",ans);
}
return 0;
}
POJ 2486 Apple Tree (树形dp 经典题)的更多相关文章
- poj 2486 Apple Tree(树形DP 状态方程有点难想)
Apple Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9808 Accepted: 3260 Descri ...
- POJ 2486 Apple Tree(树形DP)
题目链接 树形DP很弱啊,开始看题,觉得貌似挺简单的,然后发现貌似还可以往回走...然后就不知道怎么做了... 看看了题解http://www.cnblogs.com/wuyiqi/archive/2 ...
- POJ 1155 TELE 背包型树形DP 经典题
由电视台,中转站,和用户的电视组成的体系刚好是一棵树 n个节点,编号分别为1~n,1是电视台中心,2~n-m是中转站,n-m+1~n是用户,1为root 现在节点1准备转播一场比赛,已知从一个节点传送 ...
- 51nod 1353 树 | 树形DP经典题!
51nod 1353 树 | 树形DP好题! 题面 切断一棵树的任意条边,这棵树会变成一棵森林. 现要求森林中每棵树的节点个数不小于k,求有多少种切法. 数据范围:\(n \le 2000\). 题解 ...
- 【POJ 2486】 Apple Tree (树形DP)
Apple Tree Description Wshxzt is a lovely girl. She likes apple very much. One day HX takes her to a ...
- POJ 2486 Apple Tree (树形DP,树形背包)
题意:给定一棵树图,一个人从点s出发,只能走K步,每个点都有一定数量的苹果,要求收集尽量多的苹果,输出最多苹果数. 思路: 既然是树,而且有限制k步,那么树形DP正好. 考虑1个点的情况:(1)可能在 ...
- POJ 2486 Apple Tree
好抽象的树形DP......... Apple Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6411 Accepte ...
- HDU 2196 Computer 树形DP 经典题
给出一棵树,边有权值,求出离每一个节点最远的点的距离 树形DP,经典题 本来这道题是无根树,可以随意选择root, 但是根据输入数据的方式,选择root=1明显可以方便很多. 我们先把边权转化为点权, ...
- HDU 2196 Computer 树形DP经典题
链接:http://acm.hdu.edu.cn/showproblem.php? pid=2196 题意:每一个电脑都用线连接到了还有一台电脑,连接用的线有一定的长度,最后把全部电脑连成了一棵树,问 ...
随机推荐
- mongodb--安全
安全和认证 mongodb和redis比较像,安全部分依赖于其所存在的环境 一定要把mongodb放在一个可信的环境下去运行,mongodb只能被web服务器所访问,禁止开外网端口访问mongodb, ...
- servlet理解
可得到一个结论:该JSP页面中的每个字符都由test1_jsp.java文件的输出流生成. 根据上面的JSP页面工作原理图,可以得到如下四个结论: — JSP文件必须在JSP服务器内运行. — JSP ...
- caffe中ConvolutionLayer的前向和反向传播解析及源码阅读
一.前向传播 在caffe中,卷积层做卷积的过程被转化成了由卷积核的参数组成的权重矩阵weights(简记为W)和feature map中的元素组成的输入矩阵(简记为Cin)的矩阵乘积W * Cin. ...
- 8 Reasons why SharePoint is Bad for Your Business 8个理由告诉你,为什么SharePoint对你的业务有害
8 Reasons why SharePoint is Bad for Your Business 8个理由告诉你,为什么SharePoint对你的业务有害 SharePoint近期已 ...
- UML的基本图(二)
Both sequence diagrams and communication diagrams are kinds of interaction diagrams. An interacti ...
- luogu3942 将军令 贪心
题目大意:给你一个地图(树),共有1~n个驿站(点),编号分别为1~n,告诉你第ui个驿站与第vi个驿站有一条长度为1的路(边),每个小队(可以放在任意驿站上)最多有k的覆盖长度,问最多要放置多少个小 ...
- 11.修改WSDL文档
http://localhost:8077/person?wsdl可以由你来控制的.拿Person这个例子来说.
- php 判断过去离现在几年的函数
function gettime($worktime){ $time=time(); $amount=date("Y",$time)-date("Y",strt ...
- ffmpeg实现
最近做一个小项目,要在线播放录制的 MP4 视频,想开源的 flash player 或 html 5 可以播放.可,虽然 MP4 是 H.264 编码,但就是播放不了.可能是封装方式(PS 方式)不 ...
- flex和layout移动端布局
1.九宫格 样式为: ul{ display: flex; flex-wrap: wrap;//超出换行 } li{ width: 33%; height: 60px; display: flex; ...