HDU 1520 Anniversary party(树形dp)

树形dp第一题!!!

题意很清晰,思路也很明确。很容易找到根节点,即最大的boss,通过根节点向下dp。

状态转移方程:

  • int to = vec[x][i];
  • dfs(to);
  • dp[x][1] += dp[to][0];
  • dp[x][0] += max(dp[to][1], dp[to][0]);

即对于一个节点。如果它有根节点:

  • 选区本节点;
  • 或者选取根节点的最大权值.
#include <iostream>
#include <cstring>
#include <vector>using namespace std;const int N = 6010;int n;
int value[N];
vector< vector<int > > vec(N);
int boss, emp;
int root;
int non[N];int dp[N][2];void init()
{memset(value, 0,sizeof(value));memset(non, false,sizeof(non));memset(dp, 0,sizeof(dp));
}void find_root()
{for(int i = 1 ; i <= n ;i++){if(non[i] == false){root = i;return;}}
}void dfs(int x)
{for(int i = 0; i < (int)vec[x].size(); i++){int to = vec[x][i];dfs(to);dp[x][1] += dp[to][0];dp[x][0] += max(dp[to][1], dp[to][0]);}
}int main()
{init();cin >> n;for(int i = 1 ; i <= n ; i++) {cin >> value[i];dp[i][1] = value[i];}for(int i = 1 ; i < n ; i++){cin >> boss >> emp;vec[emp].push_back(boss);non[boss] = true;}cin >> boss >> emp;find_root();dfs(root);cout << max( dp[root][0] , dp[root][1] );return 0;
}

转载于:https://www.cnblogs.com/ronnielee/p/9495148.html

HDU 1520 Anniversary party(树形dp)相关推荐

  1. HDU - 1520 Anniversary party [树形dp]

    Anniversary party 时限:1000ms Problem Description There is going to be a party to celebrate the 80-th ...

  2. POJ 2342 | HDU 1520 Anniversary party 树形DP(入门题)

    传送门:POJ 2342 题目大意: 有若干人参加一个聚会,如果两个人之间有直接的上下属关系,则只能去一个.每个人都有个高兴值,问高兴值之和最大是多少? 思路: 之前一直觉得树形DP比较难,现在发现树 ...

  3. 宋体节点hdoj 1520 Anniversary party(树形dp)

    每日一贴,今天的内容关键字为宋体节点 标题链接 按照级等我们可以建一颗树,如图 我们可以把一个节点当作一个人,每一个节点都有一个权重.按照标题意思,如果我们取了某个节点,那么他的父节点和子节点都是不能 ...

  4. hdu 1520 Anniversary party(第一道树形dp)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1520 Anniversary party Time Limit: 2000/1000 MS (Java ...

  5. POJ - 2342 Anniversary party(树形dp入门)

    题目链接:点击查看 题目大意:每个人都有一个快乐值,给定一个树状的从属关系,仅当上司和下属都不在的时候这个个人的快乐值才能表现出来,问怎么样才能让整体的快乐值达到最大 题目分析:做线段树做吐了,来换换 ...

  6. HDU 3534 Tree (经典树形dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3534 题意: 给你一棵树,问你有多少对点的距离等于树的直径. 思路: dp[i][0]表示在i的子树中 ...

  7. HDU 1011(星河战队 树形DP)

    题意是说在一个洞穴中有许多房间,每个房间中有一些虫子和大脑,这些房间之间用隧道相连形成一棵树,士兵们杀虫子的能力有限,也可以直接杀死虫子而不消耗士兵战斗力,但这样就无法得到房间中的大脑,士兵们不能走回 ...

  8. hdu 4044 GeoDefense (树形dp | 多叉树转二叉树)

    题目链接:hdu-4044 题意 这是一个塔防游戏,地图是一个n个编号为1-n的节点的树, 节点1是敌人的基地,其他叶子节点都是你的基地.    敌人的基地会源源不断地出来怪兽,为了防止敌人攻进你的基 ...

  9. HDU.5909.Tree Cutting(树形DP FWT/点分治)

    题目链接 \(Description\) 给定一棵树,每个点有权值,在\([0,m-1]\)之间.求异或和为\(0,1,...,m-1\)的非空连通块各有多少个. \(n\leq 1000,m\leq ...

最新文章

  1. SVN文件库移植(转)
  2. 做外贸如何获取同行的价格体系?转至【【Mr.Harris 原创】
  3. Eclipse中新建Maven项目没有java以及test目录
  4. stm32 窗口看门狗学习(二)
  5. SAP Fiori smart template技术里CDS view的注解和UI元素对应关系
  6. 通过用 .NET 生成自定义窗体设计器来定制应用程序
  7. java趣事_【趣事】Java程序员最年轻,C++程序员最年老
  8. NUC1015 计算数字的根
  9. LINUX使用OpenSSL进行签名
  10. 免费下载卫星地图 高清卫星地图软件
  11. 【Unity】出现NullReferenceException:Object reference not set to an instance of an object.的原因总结
  12. yarn命令报错Error: The project seems to require yarn but it‘s not installed
  13. 相亲小程序如何做到年入百万?盈利模式是什么?
  14. 解决方法数超65536(java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536)
  15. 【Typora】 自定义背景颜色(护眼绿) 高亮颜色 选中内容颜色 高亮快捷键
  16. java中有这个符号吗吗_Java中-符号是什么意思啊
  17. 如何转换.CR2格式的图片
  18. 02-pandas数据分析库
  19. 一张图片测试你的好色程度
  20. 简单介绍盒子模型的原理以及用法

热门文章

  1. 计算机学具制作,6计算机模板教案6算机模板教案.doc
  2. c语言利用sin约等于x-,用泰勒公式求sin(x)的近似值
  3. 高德软件测试工资,【高德工资】软件测试工程师待遇-看准网
  4. mysql索引与约束有什么关系_MySQL 约束与索引
  5. .net 把一个对象赋值给一个参数_Java:new一个对象的过程中发生了什么?
  6. java int数组写入文件中_Java程序将int数组写入文件
  7. mysql 语句性能分析_mysql的sql语句的性能诊断分析
  8. 计算机将成为学生们的老师英语,重庆英语教师
  9. linux实用小工具,Linux系统小工具使用大用途---1
  10. mac地址扫描源码_iNet Network Scanner扫描网络,及时反馈WiFi信号强度!