Zoj 3201 Tree of Tree
树树
时间限制: 1秒 内存限制: 32768 KB
你给一个树的每个节点的权重,你需要找到这棵树的指定大小的最大子树。
树定义
树是其中不包含任何周期的连通图。
输入
有在输入多个测试用例。
每种情况下的第一行是两个整数N(1 <= N <= 100),K(1 <= K <= N),其中N是该树的节点的数量,K是子树的大小,其次通过与N的非负整数,其中第k个整数表示第k个节点的权重的行。接下来的N - 1行描述了树,每行有两个整数这意味着在这两个节点之间的边缘。以上所有的指标都是零基础,这是保证树的描述是正确的。
产量
一行与对于每种情况,这是最大的子树的总权重的单个整数。
样例输入
3 1
10 20 30
0 1
0 2
3 2
10 20 30
0 1
0 2
样例输出
30
40
树型DP+背包问题!
f[i][j]表示以i为根结点有j个结点子树的最大权值。
以下代码仅供参考!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
#define MAX 105
vector<int> adj[MAX];
int f[MAX][MAX],tot[MAX],weight[MAX];
int ans,K;
int max(int a,int b)
{return a>b?a:b;
}
int DFS(int u,int father)
{tot[u]=1;int i,j,k,v;for(i=0;i<adj[u].size();i++){v=adj[u][i];if(v==father) // 如果又回到了父节点的情况continue;tot[u]+=DFS(v,u);}f[u][1]=weight[u];for(i=0;i<adj[u].size();i++){v=adj[u][i];if(v==father)continue;for(j=tot[u];j>=1;j--){for(k=0;k<j&&k<=tot[v];k++){f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]);}}}if(tot[u]>=K)ans=max(ans,f[u][K]);return tot[u];
}
int main()
{int N,i,u,v;while(~scanf("%d%d",&N,&K)){for(i=0;i<N;i++){scanf("%d",&weight[i]);adj[i].clear();}for(i=1;i<N;i++){scanf("%d%d",&u,&v);adj[u].push_back(v);adj[v].push_back(u);}memset(f,0,sizeof(f));ans=0;DFS(1,-1);printf("%d\n",ans);}return 0;
}
Zoj 3201 Tree of Tree相关推荐
- 转帖:BTree,B-Tree,B+Tree,B*Tree都是什么
BTree,B-Tree,B+Tree,B*Tree都是什么 转帖自:http://blog.csdn.net/manesking/archive/2007/02/09/1505979.aspx &l ...
- # tree bash: tree: 未找到命令...
今天使用CentOS7想查看tree,现象如下: [root@localhost 桌面]# tree bash: tree: 未找到命令- 显示找不到命令,后来发现原因是部分linux系统没有tree ...
- [置顶]B-tree/B+tree/B*tree [转]
(原文出处: http://blog.csdn.net/hbhhww/article/details/8206846) B~树 1.前言: 动态查找树主要有:二叉查找树(Binary Search T ...
- ZOJ 3686 A Simple Tree Problem
ZOJ月赛,题目描述确实很simple... 那么就是把一棵树转换为线性表,使得整个子树都在一个区间里.. 方法就是前序遍历了,遍历完一颗树它的根节点都连续的存在它后面了. 对于每一个节点要存它和它子 ...
- 【ACM】二叉搜索树(Binary Search Tree /BS Tree) 小结
动态管理集合的数据结构--二叉搜索树 搜索树是一种可以进行插入,搜索,删除等操作的数据结构,可以用字典或者优先队列. 二叉排序树又称为二叉查找树,他或者为空树,或者是满足如下性质的二叉树. (1)若它 ...
- 5.30 Tree Traversal + Tree manipulation
Binary Tree Preorder Traversal 题目:对一棵二叉树进行前序遍历,并将结果存在一个List 当中 思路:使用递归 细节: 对于递归版本:注意preorderTraversa ...
- BTree,B-Tree,B+Tree,B*Tree
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...
- GBRT(GBDT)(MART)(Tree Net)(Tree link)
源于博客 GBRT(梯度提升回归树)有好多名字,标题全是它的别名. 它是一种迭代的回归树算法,由多棵回归树组成,所有树的结论累加起来得到最终结果.在被提出之初与SVM一起被认为是泛化能力较强的算法. ...
- 小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D
小 Q 与树 给定一棵带权的树,每条边的距离都为111,要我们求∑u=1n∑v=1nmin(au,av)dis(u,v)\sum\limits_{u = 1} ^{n} \sum\limits_{v ...
最新文章
- 西瓜书——EM算法(一)
- vue 前端设置允许跨域_[web]记一次sanic+vue跨域问题
- vue2.x-cnode(vue全家桶)
- stackexchange.mysql_StackExchange.Redis客户端读写主从配置,以及哨兵配置。
- IIS、MySQL、Redis环境搭建
- html页面保存到本地文件路径,js上传文件到指定路径 jQuery或者js保存文件到本地...
- java基本数据类型字节大小,Java基本数据类型及所占字节大小
- 用户体验测试一样很重要
- oracle拆分分区语法详解大全_Oracle分区表详解
- 蜀山剑侠传打开服务器更新第一个文件失败,蜀山剑侠传,基础设定
- session 的钝化和活化
- 耳机插入电脑没反应找不到realtek音频管理器
- 木瓜从林。。。。。。。。。。。。。。。。。
- 【微信小程序】-- 页面导航 -- 编程式导航(二十三)
- 【人工智能】CB Insights:2018年全球人工智能发展趋势报告
- AT24C04【EEPROM】iic时序解读
- ORA-00392: log 15 of thread 1 is being cleared, operation not allowed
- Pulmonary--Detection5
- DY-SV17F语音播放模块应用篇一 【IO独立模式】
- joan sola_Joan Touzet在CouchDB和Apache方式上