博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1520 Anniversary party(简单树形dp)
阅读量:4073 次
发布时间:2019-05-25

本文共 907 字,大约阅读时间需要 3 分钟。

本文出自   

题意:

给出一棵树 每个节点有权值 要求父节点和子节点不能同时取 求能够取得的最大值

思路:

树形dp的入门题

f[u][0]表示以u为顶点的子树,不选u点的情况下最大值
f[u][1]表示以u为顶点的子树,选u点的情况下最大值
那么,

f[u][0] = sum{ max{f[v][0], f[v][1]}, v是u的儿子节点}; //当不选u点时,它的儿子节点可以不选也可以选
f[u][1] = val[u] + sum{f[v][0], v是u的儿子节点} //当选了u点时,它的儿子节点必须是不能选

代码:

/**========================================== *   This is a solution for ACM/ICPC problem * *   @author: shuangde *   @blog: blog.csdn.net/shuangde800 *   @email: zengshuangde@gmail.com *===========================================*/#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long int64;const int INF = 0x3f3f3f3f;const double PI = acos(-1.0);const int MAXN = 6010;vector
adj[MAXN];int indeg[MAXN];int val[MAXN];int f[MAXN][2];int vis[MAXN];int n, m;void dfs(int u){ vis[u] = true; f[u][0] = 0; f[u][1] = val[u]; for(int i=0; i

你可能感兴趣的文章
【leetcode】Pascal's Triangle II (python)
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
备忘:java中的递归
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>