树的最大独立集

对于一颗n个结点的无根树,选出尽量多的的结点,使得任何两个结点均不相邻(称为最大独立集),然后输入n-1条无向边,输出一个最大独立集(如果有多解,则任意输出一组)。

分析:

用d(i)表示以i为根结点的子树的最大独立集的大小。此时需要注意的是,本题的树是无根的:没有所谓的父子关系,而只是一些无向边。没关系,只要任选一个跟r,无根树就变成了有根树,上述状态的定义也就有意义了。

结点i只有两种决策,选和不选。如果不选i,则问题转化为求出i所有的儿子的d值再相加;若选i,则它的儿子全部不能选,问题转化为了求出i的所有孙子的d值之和。换句话说,状态转移方程为:

d(i)=max{1+Ed(j)(j属于gs(i)),Ed(j)(j属于s(i))}

其中gs(i)和s(i)分别代表i的孙子集合和儿子集合。

代码应该如何编写呢?上面的方程涉及“枚举结点i的所有儿子和孙子结点”,颇为不便。其实可以换另一个角度来看:不从i找s(i)和gs(i)的元素,而从s(i)和gs(i)的元素找i。换句话说,当计算出一个d(i)后,用它去更新i的父亲和祖父结点的累加值Ed(j)(j属于gs(i)和Ed(j)(j属于s(i))。这样一来,每个结点不必记录其子结点有哪些,只需记录父结点即可。

树形动态规划之树的最大独立集相关推荐

  1. 旅游(树形dp求树的最大独立集)

    链接:https://ac.nowcoder.com/acm/problem/15748 来源:牛客网 题目描述 Cwbc和XHRlyb生活在s市,这天他们打算一起出去旅游. 旅行地图上有n个城市,它 ...

  2. c++ 不撞南墙不回头——树形动态规划(树规)

    不撞南墙不回头--树规总结                                         焦作一中信息学oy 之所以这样命名树规,是因为树规的这一特殊性:没有环,dfs是不会重复,而 ...

  3. 不撞南墙不回头——树形动态规划(树规)

    不撞南墙不回头--树规总结                                         焦作一中信息学oy 之所以这样命名树规,是因为树规的这一特殊性:没有环,dfs是不会重复,而 ...

  4. 树上的动态规划--树的最大独立集--刷表法

    树的最大独立集 对于一棵有N个结点的无根树,选出尽量多的结点,使得任何两个结点均不相邻(称为最大独立集). 输入 第1行:1个整数N(1 <= N <= 6000),表示树的结点个数,树中 ...

  5. 一本通提高篇 树形动态规划

    先写个考试 鸽着~ 考试有树 d p dp dp紫题 我回来了 每年联赛基本都有好几道题时树 d p dp dp,这块一定得好好学 U P D : 20201109 UPD:20201109 UPD: ...

  6. HDU1520 Anniversary party 树形动态规划

    HDU1520 Anniversary party 树形动态规划 Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  7. 蓝桥杯 算法训练(四)结点选择(树形动态规划)

    结点选择(树形动态规划)C语言 问题描述 有一棵 n 个节点的树,树上每个节点都有一个正整数权值.如果一个点被选择了,那么在树上和它相邻的点都不能被选择.求选出的点的权值和最大是多少? 输入格式 第一 ...

  8. Facebook Hacker Cup 2015 Round 1--Corporate Gifting(树形动态规划)

    原题:https://www.facebook.com/hackercup/problems.php?pid=759650454070547&round=344496159068801 题意: ...

  9. 假如我是儿子——树形动态规划

    --来自焦作一中卢裕东 想给这篇总结起个霸气又有意义的名字,翻来覆去,想到了今年暑假在郑州的NOIP夏令营,朱全民老师讲树规时说的一句惊天动地的话,那时给我们举例子,就有了这句:假如我是儿子!好吧,我 ...

最新文章

  1. 知乎高赞:字节总监的开发手记!
  2. 挑选SaaS企业需要注意十要素
  3. p5js可以在linux上运行吗,在linux上使用python运行phantomjs
  4. 路考步骤七步走 科目三考试一定没问题!
  5. LeetCode 676. 实现一个魔法字典(哈希)
  6. 这款App被端了!曾是蔡徐坤一亿微博转发量的幕后推手 半年吸金800万
  7. 查看idea的安装位置_idea怎么重置默认配置-idea重置默认配置的方法步骤
  8. php面向对象之get和set方法
  9. mediarecoder 安卓_android 通过MediaRecorder实现简单的录音示例
  10. linux非图形界面运行vscode,linux无法启动vscode怎么办
  11. 虚拟机virtualBox
  12. bzoj 1045: [HAOI2008]糖果传递
  13. 进阶 2 日期时间类
  14. 深度Linux收费,Deepin专业版为收费的,而Deepin社区版则是能免费使用的
  15. 孙过庭草书:《景福殿赋》(图像古昔,以当箴规),韵味十足!
  16. netty报错:远程主机强迫关闭了一个现有的连接
  17. 中国剩余定理求解同余线性方程组(模数互素和非互素的情况)
  18. c语言 交通处罚单管理程序 typedef struct,交通罚单.doc
  19. 语义分割模型------unet unet++
  20. leetcode:13、罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

热门文章

  1. Mac安装并配置Git+SourceTree使用
  2. android:详细解读DialogFragment
  3. android视频播放框架Vitamio
  4. 新零售全渠道营销,线上经营,线下成长
  5. 收藏!2020上半年社区精华教程盘点
  6. C/C++ libcurl CURLOPT_NOSIGNAL选项
  7. 计算机配置扫盲,小白买电脑不知所措?最全的扫盲知识
  8. 解决mac突然连不上wifi了(wifi出现灰色小感叹号!)
  9. IDEA中项目编码格式设置
  10. 外贸人如何在领英linkedin上高效开发客户