ural 1018(树形dp)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17662
思路:典型的树形dp,处理的时候类似于分组背包,dp[i][j]代表以i为根的树取j个分支获得的最大值。
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<vector>
- using namespace std;
- #define MAXN 111
- struct Edge{
- int v,w;
- Edge(){}
- Edge(int vv,int ww):v(vv),w(ww){}
- };
- int n,q;
- int num[MAXN];
- int dp[MAXN][MAXN];//以i为根的树选了j个分支(包括i)
- vector<vector<Edge> >g;
- void dfs(int u,int father)
- {
- num[u]=;
- for(int i=;i<g[u].size();i++){
- int v=g[u][i].v,w=g[u][i].w;
- if(v==father)continue;
- dfs(v,u);
- num[u]+=num[v];
- for(int j=num[u];j>=;j--){
- for(int k=;k<j&&k<=num[v];k++){
- dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]+w);
- }
- }
- }
- }
- int main()
- {
- int u,v,w;
- while(~scanf("%d%d",&n,&q)){
- g.clear();
- g.resize(n+);
- for(int i=;i<n;i++){
- scanf("%d%d%d",&u,&v,&w);
- g[u].push_back(Edge(v,w));
- g[v].push_back(Edge(u,w));
- }
- memset(dp,,sizeof(dp));
- dfs(,-);
- printf("%d\n",dp[][q+]);
- }
- return ;
- }
ural 1018(树形dp)的更多相关文章
- Ural 1018 (树形DP+背包+优化)
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17662 题目大意:树枝上间连接着一坨坨苹果(不要在意'坨'),给 ...
- URAL 1056(树形DP)
1056. Computer Net Time limit: 2.0 second Memory limit: 64 MB Background Computer net is created by ...
- URAL 1018 (金典树形DP)
连接:1018. Binary Apple Tree Time limit: 1.0 second Memory limit: 64 MB Let's imagine how apple tree l ...
- ural 1018 Binary Apple Tree(树形dp | 经典)
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- 树形DP URAL 1039 Anniversary Party
题目传送门 /* 题意:上司在,员工不在,反之不一定.每一个人有一个权值,问权值和最大多少. 树形DP:把上司和员工的关系看成根节点和子节点的关系,两者有状态转移方程: dp[rt][0] += ma ...
- 刷题总结——二叉苹果树(ssoj树形dp+记忆化搜索)
题目: 题目背景 URAL:http://acm.timus.ru/problem.aspx?space=1&num=1018 题目描述 有一棵苹果树,如果树枝有分叉,一定是分 2 叉(就是说 ...
- 树形DP
切题ing!!!!! HDU 2196 Anniversary party 经典树形DP,以前写的太搓了,终于学会简单写法了.... #include <iostream> #inclu ...
- poj 2342 Anniversary party 简单树形dp
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3862 Accepted: 2171 ...
- POJ 2342 (树形DP)
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3863 Accepted: 2172 ...
随机推荐
- 最近打算体验一下discuz,有不错的结构化数据插件
提交sitemap是每位站长必做的事情,但是提交到哪里,能不能提交又是另外一回事.国内的话百度是大伙都会盯的蛋糕,BD站长工具也会去注册的,可有些账号sitemap模块一直不能用,或许是等级不够,就像 ...
- Android EditText的设置
1.输入法Enter键图标的设置: 软件盘的界面替换只有一个属性android:imeOptions,这个属性的可以取的值有normal,actionUnspecified,actionNone,ac ...
- 在线调试和演示的前端开发工具------http://jsfiddle.net/
在线调试和演示的前端开发工具------http://jsfiddle.net/
- [BZOJ1163][BZOJ1339][Baltic2008]Mafia
[BZOJ1163][BZOJ1339][Baltic2008]Mafia 试题描述 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用 ...
- hiho #1143 : 骨牌覆盖问题·一 (运用快速幂矩阵)
#1143 : 骨牌覆盖问题·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题:我们有一个2xN的长条形棋盘,然 ...
- Pascal’s Triangle
vector<vector<int>> generate(int num) { vector<vector<int>> result; vector&l ...
- HLG2062(make,heap问题)
最小的n个和 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 129(37 users) Total Accepted: 35(29 u ...
- linux ls正则表达式
ls就是默认排序的. 所以: ls只支持通配符,不支持正则,所以单纯用ls是不能实现的. 一些正则过滤操作需要结合支持正则的命令如grep.sed或awk. 例如:ls | grep "[0 ...
- Flatten Binary Tree to Linked List
Flatten a binary tree to a fake "linked list" in pre-order traversal. Here we use the righ ...
- 转centos65安装简测mysql cluster 7.3.7
MySQLCluster是sharednothing分布式架构,ndb存储引擎把数据放置于内存中.可以做到无单点故障.由运行于不同服务器上的的多种进程构成,组件包括SQL节点,NDBD数据节点,管理程 ...