http://acm.timus.ru/problem.aspx?space=1&num=1018&&Binary Apple Tree
来源:互联网 发布:数据应用层协议有哪些 编辑:程序博客网 时间:2024/04/24 22:31
题意:给你一棵树,树上有很多苹果,现在要求你砍去一些树枝,问你砍去树枝后最多可以保留多少苹果,树形dp入门题
dp[i][j]表示以i为根节点保留j个树枝最多可以保留的苹果数。可得动态转移方程dp[i][j]=max(dp[i][j],dp[la][i]+dp[ra][j-i+1]);
AC代码:
#include<iostream>#include<algorithm>#include<string.h>using namespace std;typedef struct node{int lc;int rc;int s;}Node;Node tree[205];int dp[105][105],apple[105][105];bool visit[105];int n;void init(){memset(dp,-1,sizeof(dp));memset(tree,0,sizeof(tree));memset(apple,-1,sizeof(apple));}void Built_tree(int root){visit[root]=true;for(int i=1;i<=n;++i)if(!visit[i]&&apple[root][i]!=-1){if(tree[root].lc==0) tree[root].lc=i;else tree[root].rc=i;tree[i].s=apple[root][i];Built_tree(i); }}int Tree_dp(int p,int k){if(dp[p][k]!=-1) return dp[p][k];if(p==0||k==0) return 0;dp[p][k]=0;for(int i=0;i<=k-1;++i){int l=Tree_dp(tree[p].lc,i);int r=Tree_dp(tree[p].rc,k-1-i);dp[p][k]=max(dp[p][k],l+r);}dp[p][k]+=tree[p].s;return dp[p][k];}int main(){int m;cin>>n>>m;init();for(int i=0;i!=n-1;++i){int a,b,c;cin>>a>>b>>c;apple[a][b]=apple[b][a]=c;}Built_tree(1);cout<<Tree_dp(1,m+1)<<endl;return 0;}
- http://acm.timus.ru/problem.aspx?space=1&num=1018&&Binary Apple Tree
- http://acm.timus.ru/problem.aspx?space=1&num=1416&&次小生成树
- Goat in the Garden 2&&http://acm.timus.ru/problem.aspx?space=1&num=1348
- 乌拉尔大学(URAL):http://acm.timus.ru/
- Timus Online Judge 1018 Binary Apple Tree(树型dp)
- ural 1018 binary apple tree
- ural 1018 Binary Apple Tree
- URAL 1018 Binary Apple Tree
- Ural-1018-Binary Apple Tree
- ural 1018 Binary Apple Tree
- URAL 1018 binary apple tree
- URAL 1018 Binary Apple Tree
- URAL 1018 Binary Apple Tree
- Ural 1018 Binary Apple Tree
- Ural 1018 Binary Apple Tree 树形dp
- [ural 1018]Binary Apple Tree[树DP]
- URAL 1018 Binary Apple Tree (树形DP)
- URAL 1018 Binary Apple Tree (树形DP)
- office 2007 word 宏组件
- ubuntu下Tomcat的安装
- Android:Galaxy Nexus升级到4.1.2,并root(设备是日版)
- 如何在hudson上统计覆盖率
- 需要总结内容
- http://acm.timus.ru/problem.aspx?space=1&num=1018&&Binary Apple Tree
- WPF 列表控件隔行变色
- 事件函数编写方式
- ORACLE 归档日志打开关闭方法
- 整型数据
- 十七大以来8名省部级干部因特大事故受处分-省部级干部因-事故-处分
- gcc生成静态库和动态库
- Java内部的容器类之list set map的要点和不同点
- 用于关闭socket 的close 和shutdown 区别