URAL-1018 Binary Apple Tree---树形DP
题目链接:
https://cn.vjudge.net/problem/URAL-1018
题目大意:
给你一棵树,每条边有一个边权,求以1为根节点,q条边的子数(q+1个点),边权和至最大。
解题思路:
dp[root][j], 表示以root为根节点,保留j个节点的最大边权和。
dp[root][j]=max(dp[root][j],dp[root][j-t]+dp[son][t]+len);
t的范围从1到j - 1,因为每个点从dp[][1]开始更新
#include<bits/stdc++.h>
using namespace std;
const int maxn = + ;
typedef long long ll;
struct node
{
int v, w;
node(){}
node(int v, int w):v(v), w(w){}
};
vector<node>Map[maxn];
int num[maxn];//num[i]表示以i节点为root的子树中的点的数目
int dp[maxn][maxn];//dp[i][j]表示以i节点为root的子树中只有j条边最大权值
void dfs(int root, int fa)
{
num[root] = ;
for(int i = ; i < Map[root].size(); i++)
{
int v = Map[root][i].v, w = Map[root][i].w;
if(v == fa)continue;//不可回溯
dfs(v, root);//先将儿子信息更新好
num[root] += num[v];//root子树中当前的节点数目
for(int j = num[root]; j >= ; j--)//更新父节点的dp
{
for(int k = ; k < j && k <= num[v]; k++)//k不能等于j,k=j时说明root的点数目为0
dp[root][j] = max(dp[root][j], dp[root][j - k] + dp[v][k] + w);
}
}
}
int main()
{
int n, k;
while(scanf("%d%d", &n, &k) != EOF)
{
memset(dp, , sizeof(dp));
for(int i = ; i < n; i++)
{
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
Map[u].push_back(node(v, w));
Map[v].push_back(node(u, w));
}
dfs(, -);
cout<<dp[][k + ]<<endl;//包含k条边,也就是k+1个点
}
return ;
}
URAL-1018 Binary Apple Tree---树形DP的更多相关文章
- CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划)
CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划) Description 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的 ...
- URAL 1018 Binary Apple Tree(树DP)
Let's imagine how apple tree looks in binary computer world. You're right, it looks just like a bina ...
- ural 1018 Binary Apple Tree(树形dp | 经典)
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- URAL_1018 Binary Apple Tree 树形DP+背包
这个题目给定一棵树,以及树的每个树枝的苹果数量,要求在保留K个树枝的情况下最多能保留多少个苹果 一看就觉得是个树形DP,然后想出 dp[i][j]来表示第i个节点保留j个树枝的最大苹果数,但是在树形过 ...
- Ural 1018 Binary Apple Tree
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1018 Dynamic Programming. 首先要根据input建立树形结构,然后在 ...
- Ural-1018 Binary Apple Tree(树形dp+分组背包)
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #i ...
- timus 1018. Binary Apple Tree
1018. Binary Apple Tree Time limit: 1.0 secondMemory limit: 64 MB Let's imagine how apple tree looks ...
- 【POJ 2486】 Apple Tree (树形DP)
Apple Tree Description Wshxzt is a lovely girl. She likes apple very much. One day HX takes her to a ...
- poj 2486 Apple Tree(树形DP 状态方程有点难想)
Apple Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9808 Accepted: 3260 Descri ...
- POJ 2486 Apple Tree(树形DP)
题目链接 树形DP很弱啊,开始看题,觉得貌似挺简单的,然后发现貌似还可以往回走...然后就不知道怎么做了... 看看了题解http://www.cnblogs.com/wuyiqi/archive/2 ...
随机推荐
- 【总结】java 后台文件上传整理
public Map<String,String> clientUploadAttachment(Long belongId, String fileSource, MultipartFi ...
- XAMPP环境的搭建
XAMPP是一个强大的集成软件包(什么是集成软件包?就是多个软件打包一起安装了,比如office办公软件包括了word.Excel.PPT) XAMPP包括了Apache,MySQL,PHP,Perl ...
- Rabbit安装(windows)
安装rabbit后,启动服务,浏览器打开控制台找不到.查百度说是要装插件.翻了好几篇都是互相抄,没有能用到. 多翻了几篇终于找到一个靠谱的.可以打开控制台了.记录下: 首先要安装Erlang语言支持, ...
- rgbdslam 源代码的实现
经过一番努力,终于跑通了felix.endres的rgbd slam v2 源码,中间遇到挺多问题.总结如下: (1) 关于SiftGPU问题:ERROR: SiftGPU cannot be com ...
- [JAVA IDEA]在使用maven项目中,无法读取resources文件夹中的配置文件的一种解决方案
1.在通过配置文件来连接数据库时,在resouces文件中放入了db.properties配置文件,但无法正常读取到 读取配置文件信息的代码: InputStream input=JdbcUtil.c ...
- Java新人拿到一台新的电脑需要装配什么
适用对象:新手 装备:win10 一.IDEA 插件等 说明 其他 TranslationPlugin 翻译插件 GitHub地址 MyBatis-Generator 自动生成Mybatis文件 Al ...
- 停课+2week
可真是,累啊. 本以为停课之后会轻松一点,结果天天好累的说... 今天开始得去锻炼锻炼了... 已经好几次突然一阵晕眩了qwq... 希望我还能挺得住吧,至少要挺到WC结束啊... 这次,可是关系到我 ...
- css 动画中 ease,seae-in,ease-in-out,ease-out,效果区别
linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1)).(匀速) ease 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0. ...
- Java中的继承:父类和子类的关系
一.父类引用指向子类对象时 1.若子类覆盖了某方法,则父类引用调用子类重新定义的新方法 2.若子类未覆盖某方法,则父类引用调用父类本身的旧方法 3.若子类覆盖了某属性,但父类引用仍调用父类本身的旧属性 ...
- JQuery UI完成自动匹配的的下拉列表步骤
1.先引入jquery ui相关的js,如:jquery-ui-1.10.4.js 2.写js <script type="text/javascript"> $(fu ...