按书上大的,dfs还需加强

 1 #include <bits/stdc++.h>
 2 #define read read()
 3 using namespace std;
 4
 5 int read
 6 {
 7     int x = 0; char ch = getchar();
 8     while(ch < 48 || ch > 57) ch = getchar();
 9     while(ch >= 48&& ch <= 57) { x = 10 * x + ch - 48; ch = getchar();}
10     return x;
11 }
12
13 const int N = 101;
14
15 int n,q;
16 int head[N],size;
17 bool vis[N];
18 int l[N],r[N],a[N],tot[N];
19 int f[N][N];
20
21 struct edge{
22     int v,nxt,w;
23 }e[N<<1];
24
25 void add(int u,int v,int w)
26 {
27     e[++size].v = v;
28     e[size].w = w;
29     e[size].nxt = head[u];
30     head[u] = size;
31 }
32
33 void readdata()
34 {
35     n = read; q = read; q++;
36     int u,v,w;
37     for(int i = 1; i < n; i++)
38     {
39         u = read; v = read; w = read;
40         add(u,v,w);
41         add(v,u,w);
42     }
43 }
44
45 void maketree(int u)
46 {
47     for(int i = head[u]; i ; i = e[i].nxt)
48     {
49         int v = e[i].v;
50         if(vis[v]) continue;
51         a[v] = e[i].w;
52         vis[v] = 1;
53         l[u] = v;
54         maketree(v);
55         break;
56     }
57     for(int i = head[u]; i ; i = e[i].nxt)
58     {
59         int v = e[i].v;
60         if(vis[v]) continue;
61         a[v] = e[i].w;
62         vis[v] = 1;
63         r[u] = v;
64         maketree(v);
65         break;
66     }
67
68 }
69
70 int dp(int i,int j)
71 {
72     if(!j) return 0;
73     if(!l[i] && !r[i] )return a[i];
74     if(f[i][j]) return f[i][j];
75         for(int k = 0; k < j; k++)
76             f[i][j] = max(f[i][j], dp(l[i],k) + dp(r[i],j - 1 - k) + a[i]);
77     return f[i][j];
78 }
79
80 void work()
81 {
82     vis[1] = 1;
83     maketree(1);
84     /*for(int i = 1; i <= n; i++)
85     {
86         printf("%d %d \n",l[i],r[i]);
87     }*/
88     //for(int i = 1; i <= n; i++) printf("%d ",a[i]);
89     printf("%d",dp(1,q));
90 }
91
92 int main()
93 {
94 //    freopen("apple tree.in","r",stdin);
95     readdata();
96     work();
97     return 0;
98 }

转载于:https://www.cnblogs.com/mzg1805/p/10300252.html

MZOJ 1134: 二叉苹果树相关推荐

  1. 二叉苹果树(树型DP+背包)

    二叉苹果树 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点).这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号 ...

  2. 洛谷2015 二叉苹果树 树形DP

    https://www.luogu.org/problemnew/show/P2015 二叉苹果树 时间限制: 1 Sec  内存限制: 128 MB 题目描述 有一棵苹果树,如果树枝有分叉,一定是分 ...

  3. 洛谷P2015 二叉苹果树【树形dp】

    P2015 二叉苹果树 时间限制 1.00s 内存限制 125.00MB 题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点 ...

  4. AcWing1074. 二叉苹果树(树形DP)题解

    题目传送门 题目描述 有一棵二叉苹果树,如果树枝有分叉,一定是分两叉,即没有只有一个儿子的节点. 这棵树共 N 个节点,编号为 1 至 N,树根编号一定为 1. 我们用一根树枝两端连接的节点编号描述一 ...

  5. 【算法•日更•第九期】树型动态规划详解:二叉苹果树

    ▎前置技能:动态规划&树 树型动态规划一听就知道是在树结构上使用的动态规划,那么不会树结构和动态规划怎么行?戳这里了解动态规划和树. ▎什么是树型动态规划? ☞『定义』 树形动态规划问题可以分 ...

  6. 树形DP入门(二叉苹果树+没有上司的舞会)

    树形dp学习笔记 - _Lancy - 博客园二叉苹果树 二叉苹果树 没有上司的舞会 二叉苹果树的处理可以说是非常模板了,正常容易联想到倒过来的数字三角形 for(int i=n;i>=1;i- ...

  7. 洛谷 P2015 二叉苹果树 题解

    洛谷 P2015 二叉苹果树 题解 洛谷 P2015 题目 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有NNN个结点(叶子点或者树枝分叉点),编号为1-NNN ...

  8. 洛谷P2015 二叉苹果树

    题目描述 有一棵苹果树,如果树枝有分叉,一定是分二叉(就是说没有只有一个儿子的结点) 这棵树共有 NN 个结点(叶子点或者树枝分叉点),编号为 1 \sim N1∼N,树根编号一定是 11. 我们用一 ...

  9. P2015 二叉苹果树 树形DP

    题目描述 有一棵苹果树,如果树枝有分叉,一定是分二叉(就是说没有只有一个儿子的结点) 这棵树共有 NN 个结点(叶子点或者树枝分叉点),编号为 1 \sim N1∼N,树根编号一定是 11. 我们用一 ...

最新文章

  1. bellman_ford寻找平均权值最小的回路
  2. 图文并茂的生产者消费者应用实例demo
  3. MapReduce的序列化案例
  4. hdu 2602 Bone Collector(01背包)
  5. Eclipse安装Perl插件
  6. unixbench类似_UnixBench的实现介绍-阿里云开发者社区
  7. linux 切换目录技巧,Lnux入门教程:Linux目录切换技巧
  8. 设计模式三(工厂方法模式)学习笔记
  9. 一个内存增长问题的分析和处理(二)——valgrind工具的用法
  10. idea导入spring源码_Spring源码入门到放弃(一):环境准备
  11. Docker Compose 引用环境变量
  12. 北京科技大学计算机控制实验报告,北科大计组原理实验报告.docx
  13. 微处理器 微型计算机 单片机之间有何区别,微处理器、微计算机、微处理机、CPU、单片机、嵌入式处理器它们之间有什么区别?...
  14. openwrt定时任务 2021-10-08
  15. 快递单号物流查询自动识别接口【快递鸟API通用教程】
  16. 二分钟倒计时c语言编程,c语言分钟倒计时代码.docx
  17. 新的开始,fighting
  18. 如何绘制用户体验地图
  19. 快排 找第k大的数字
  20. CIDR表示IP地址

热门文章

  1. 性能优化之图片懒加载
  2. Maven拉取私服Jar包和发布jar包到maven私服
  3. 图像局部显著性—点特征(GLOH)
  4. main线程 子线程 顺序_面试官:线程池如何按照core、max、queue的执行顺序去执行?详解...
  5. JAVA实现N皇后问题(回溯法)
  6. 非nodejs方式的vue.js的使用
  7. Linux关机和重启命令总结
  8. 在Eclipse中搭建Python Django
  9. 无法解析的外部符号的几种可能(lib方面的)(还有dll方面的,不在本文中)...
  10. 使用Vitamio打造自己的Android万能播放器(1)——准备