这个题目听说是DP tree

DP tree自己还不是很熟悉,看了网上的解题报告出的题目,

有点戳,不解释,今后多看看这个方面的问题。

ans[i][j] = max(ans[i.leftchild][k] + ans[i.rightchild][j-k-1]) + i.val (i.leftchild表示其左孩子的编号,i.val表示i与其父节点相连的那条边上的苹果数),这样对于第i个节点ans[i][j]就会必取i与其父节点相连的那条边最终形成j条边。当j=0时,ans[i][j] = 0。

#include "stdio.h"

#include "string.h"

struct node

{

int l , r;

int s;

} tree[200];

int f[110][110] , apple[110][110];

int vis[100];

int n , q;

void create_tree(int root)

{

int i;

vis[root] = 1;

for( i = 1 ; i <= n ; i++ )

if(!vis[i] && apple[root][i] != -1)

{

if(tree[root].l==0)

tree[root].l=i;

else

tree[root].r=i;

tree[i].s = apple[root][i];

create_tree(i);

}

}

int tree_dp(int t , int k)

{

int i , ls , rs;

if(f[t][k] != -1)

return f[t][k];

if(t==0||k==0)

{

f[t][k] = 0;

return 0;

}

f[t][k] = 0;

for( i = 0 ; i <= k-1 ; i++ )

{

ls = tree_dp(tree[t].l,i);

rs = tree_dp(tree[t].r,k-1-i);

if( f[t][k] < ls+rs )

f[t][k] = ls+rs;

}

f[t][k] += tree[t].s;

return f[t][k];

}

int main()

{

int i , ans , a , b , s;

scanf("%d%d",&n,&q); q++;

memset(apple,-1,sizeof(apple));

for ( i = 1 ; i <= n-1  ; i++)

{

scanf("%d%d%d",&a,&b,&s);

apple[a][b]=s; apple[b][a]=s;

}

memset(tree,0,sizeof(tree));

memset(vis,0,sizeof(vis));

create_tree(1);

memset(f,-1,sizeof(f));

ans = tree_dp(1,q);

printf("%d\n",ans);

return 0;

}

转载于:https://www.cnblogs.com/zuckerTT/archive/2011/09/25/2189855.html

【dp】URAL-1018相关推荐

  1. 【BZOJ1814】Ural 1519 Formula 1 插头DP

    [BZOJ1814]Ural 1519 Formula 1 题意:一个 m * n 的棋盘,有的格子存在障碍,求经过所有非障碍格子的哈密顿回路个数.(n,m<=12) 题解:插头DP板子题,刷板 ...

  2. 【DP】【期望】$P1850$换教室

    [DP][期望]\(P1850\)换教室 链接 题目描述 有 \(2n\) 节课程安排在$ n$ 个时间段上.在第 \(i\)(\(1 \leq i \leq n\))个时间段上,两节内容相同的课程同 ...

  3. Bailian2760 数字三角形【DP】

    2760:数字三角形 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可 ...

  4. NUC1131 Triangle【DP】

    Triangle 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 图1表示一个数字三角形. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ...

  5. LeetCode:完全平方数【279】【DP】

    LeetCode:完全平方数[279][DP] 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示 ...

  6. 【DP】序列 题解

    [DP]序列 题解 序列 题目 一个长度为kkk的整数序列bbb 1,bbb 2,-,bkbkbk(1≤bbb 1≤bbb 2≤-≤bkbkbk≤NNN)称为"好序列"当且仅当后一 ...

  7. poj 2411 Mondriaan#39;s Dream 【dp】

    题目:poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然后问你最多由多少种不同的方案. 分析:这是一个比較经典的题目.网上各种牛B写法一大堆. ...

  8. BestCoder冠军赛 - 1005 Game 【DP】

    [题意] 给出一个set,set中有几个数. 现在给出n个人,环成一圈搞约瑟夫... 开始时从第1号报数,每次从set中随机选出一个数s,等报数到s后,报s的人出圈,其他人继续报数. 最后只剩1人时, ...

  9. 【9.22校内测试】【可持久化并查集(主席树实现)】【DP】【点双联通分量/割点】...

    1 build 1.1 Description 从前有一个王国,里面有n 座城市,一开始两两不连通.现在国王将进行m 次命令,命令可 能有两种,一种是在u 和v 之间修建道路,另一种是询问在第u 次命 ...

  10. zzuliOJ 1894: 985的方格难题 【dp】

    1894: 985的方格难题 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 369  Solved: 75 Description 985走入了一个n ...

最新文章

  1. 操作-《oracle入门到精通》第六章开始
  2. spring3.0设置定时任务
  3. mysql 4.0 删除重复_mysql删除重复数据
  4. SAP系统中的银行主数据FI12
  5. 如何在 Flutter 中使 Expanded 中的文本可滚动
  6. java数据抽取到数据仓库_关于数据增量抽取的模拟实现——脚本实现
  7. C++ Templates 中的一个例子
  8. excel 表生成insert语句。
  9. Openstack平台搭建之第二天
  10. 残疾人软件开发_组织如何使残疾人更具包容性
  11. ROS笔记(26) Movelt!
  12. 计算机网络可以分为点对点网络,计算机网络第1章习题答案
  13. Linux 端口占用情况查看
  14. mysql 分页 order_mysql学习笔记:九.排序和分页(order by、limit)
  15. Golang 大杀器之性能剖析 PProf
  16. Cefsharp入坑实操
  17. 了解单反相机的自动对焦点
  18. NLP之文本分类方法之基础知识
  19. ubuntu 20.04网卡驱动安装(rtl8812au)
  20. collapsible data-collapsed Jquery-mobile动态设置

热门文章

  1. ospf lesson 3
  2. Android常见漏洞
  3. Python基本语法[二],python入门到精通[四] (转)
  4. java数组、集合和数据结构知识*
  5. Eclipse导入Android Project遇到的问题
  6. [zz]写在KVM (Kernel-based Virtual Machine) 安装成功后
  7. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-使用UDA操纵SQL语句...
  8. 错误913:未能找到ID为13的数据库。可能该数据库尚未激活,也可能正在转换过程中...
  9. Java 并发(JUC 包-03)
  10. 树莓派 树莓派 编c++_树莓派6年