(牛客网)树型dp

树型dp

视频链接
(如果想购买网课,可以用我的邀请码)
用我的链接购买,我再反你10,一共花54多值
购买链接
不放心可以先加我好友2830872914

总试题链接

文章目录

  • 树型dp
  • 例题
      • NC15033 小G有一个大树
      • NC511788 没有上司的舞会(最大独立集)
      • poj1463 NC106060 Strategic game(树的最小点覆盖)
      • NC24953 CellPhoneNetwork(树的最小支配集)
      • 以上小总结:
      • NC50505 二叉苹果树
      • 延伸-->多叉树情况
      • NC202475 树上子链(树的直径)
      • NC22598 Rinne Loves Edges
      • NC210473 吉吉王国
  • 习题
    • NC13249 黑白树
    • NC15748 旅游
    • NC19782 Tree
    • NC200547 划分树
    • NC201400 树学
    • NC20811 蓝魔法师
    • NC51179 选课
    • NC51180 Accumulation Degree

例题

NC15033 小G有一个大树

题解链接
树的重心定义为:树中的一个点,删掉该点,使剩下的树所构成的森林中最大的子树节点数最少。
dp[i]=max(n-tot[i],max(tot[k]))

NC511788 没有上司的舞会(最大独立集)

题解链接
dp[i][0]不选i点时,i点及其子树能选出的最大快乐指数
dp[i][1]表示选择i点时,i点及其子树的最大快乐值
状态转移:
dp[i][0]=∑(max dp[j][0],dp[j][1])//当i点不选时,儿子选与不选
dp[i][1]=∑dp[j][0]+Hi//选了父亲,不能选儿子
(j是i的儿子)
边界:dp[i][0]=0 dp[i][1]=hi
结果:max(dp[root][0],dp[root][1])
本质:儿子与父亲不能同时选

poj1463 NC106060 Strategic game(树的最小点覆盖)

题解链接
试题:一个树,在一个节点放兵,周围的边就被守护,守护所有的边,问最少放多少兵
确定状态:
dp[x][1]以x为根的子树全被看住且在x上放置士兵的最少所需的士兵数量
dp[x][0]以x为根的子树全被看住且在x上没有 放置士兵的最少所需的士兵数量.
确定状态方程:
dp[x][1]=1+∑min(dp[i][0],dp[i][1])//x上放了士兵,x的儿子们可放可不放
dp[x][0]=∑dp[i][1]//如果x不放士兵,x的儿子必须放
结果min(dp[root][0],dp[root][1])
i是x的儿子
相当于我们在考虑x点时,x的子节点都是被考虑完的,x能否被覆盖完全取决于自身或x的儿子

NC24953 CellPhoneNetwork(树的最小支配集)

题解链接
最少用多少个点可以覆盖掉所有其他点
确定状态:
dp[x][0]:选点i,并且以点i为根的子树都被覆盖
dp[x][1]:不选i,i被其儿子覆盖
dp[x][2]:不选点i,i被其父亲覆盖(此时儿子可选可不选)
转移方程:
dp[i][0]=1+∑min(dp[u][0],dp[u][1],dp[u][2])(u是i的儿子)
被儿子被自己被父亲覆盖

dp[i][2]=∑(dp[u][1],dp[u][0])
i被父亲覆盖,u是i的儿子,u 可选可不选,但是u肯定不会被i所覆盖

对于dp[i][1]情况,i的儿子们中必须有一个取dp[u][0]
if(i没有子节点)dp[i][1]=INF
else dp[i][1]=∑min(dp[u][0],dp[u][1])+inc
对于inc
if(∑min(dp[u][0],dp[u][1])中包含某个dp[u][0])inc=0
else inc=min(dp[u][0]-dp[u][1])
选与不选
图一是自然被选
图二是强制选择
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

以上小总结:

最小点覆盖
每个点附近周围的边
最大独立集
父亲与儿子不能同时选,选最多的点
最小支配集
每个点附近周围的点

把子树当做一个整体

NC50505 二叉苹果树

详细题解
一棵二叉苹果树,且一定分二叉, 给定需要保留的树枝数量,求最多能留住多少苹果
确定状态:
dp[u][v]以u为根的子树保留j个分支可以得到的最大苹果数量

左右儿子都在左右儿子都在
左子树砍了
在这里插入图片描述
三种情况:
只保留左
dp[u][j]=dp[l][j-1]+a[j][l]
只保留右
dp[u][j]=dp[r][j-1]+a[j][r]
左子树保留x个,右子树保留j-2-x个
dp[u][j]=dp[l][x]+dp[r][j-2-x]+a[j][l]+a[j][r]
a是指每条边的苹果树数量

延伸–>多叉树情况

不断将一个子树合并到左子树里,始终处理的只有两个子树
强行当做二叉树处理
在这里插入图片描述

树上背包
dp[u][j]=max(dp[u][k]+dp[v][j-k-1]+w)
v是u的子节点,k∈[0,j]
w=a[u][v]//u与v之间的边权
(发现该公式类似于背包)
在这里插入图片描述

NC202475 树上子链(树的直径)

详细题解
每个点有点权
树的子链大小的这个子链上所有结点的权值和
在树T中找到最大的子链

树的直径:两边dfs
点权与边权转换

NC22598 Rinne Loves Edges

详细题解
题意:
n个节点m条边的无向连通图(为树,m=n-1)
选取一个点S,然后删除一些边,使得原图中所有除S之外度为1的点都不能到达S(让叶子节点和根节点不通)
删边的费用为边的权值

可以跑网络流,全局最小割
树的话,没必要

考虑x点的子树上每个叶子都与s不连通
两种情况:
把x和他的儿子断开
在x的子树上取把所有叶子节点断开
dp[x]表示x的子树上的所有叶子和根断开的最小代价
dp[x]=∑(min(dp[y],dis[x][y]))
y是x的儿子
在这里插入图片描述

NC210473 吉吉王国

详细题解
题目:
一棵无向树,切掉一些边,切断的边的权值不能超过m,使得叶子节点与根节点(1号)分离,要使得切断的边中最大的边权要尽可能小

最大值最小:二分
去二分最长能切的边
二分+判定
如果可以切就切断,如果x到y的边切不断(x是y的父亲节点),那就切y子树里面的节点,一直向下

习题

题目链接

NC13249 黑白树

NC15748 旅游

NC19782 Tree

NC200547 划分树

NC201400 树学

NC20811 蓝魔法师

NC51179 选课

NC51180 Accumulation Degree

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node 源项目定制化、打包并使用全过程讲解

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈工…

纪中A组模拟赛总结(2021.7.17)

成绩 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3222222lyflyflyf999999000000总结 看到T1每一段有代价,每条边都至少要便利1次,感觉是树上线性规划(昨天刚讲线性规划),觉得正着没那么好做&#xff0…

.Net Core中的Api版本控制

原文链接:API Versioning in .Net Core作者:Neel Bhatt简介Api的版本控制是Api开发中经常遇到的问题, 在大部分中大型项目都需要使用到Api的版本控制在本篇博客中,我们将说明一下如何在.Net Core Api项目中使用Api版本控制。本篇博客中测试项…

Educational Codeforces Round 95 (Rated for Div. 2)

昨天本来想打一下,但是今天早上课很早,就没有打,只是看了看前三个题写了个代码,今天中午课结束交了一下都AC了。y1s1 A题第一次写就出来了,但是答案一直不对,最后结果是样例错了-。- A - Buying Torches …

【每日一题】8月4日题目精讲—购物

来源:牛客网: 文章目录购物题目描述题解:代码:购物 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 32768K,其他语言65536K 64bit IO Format: %lld题目描述 在遥远的东方,有…

P4606-[SDOI2018]战略游戏【圆方树,虚树】

正题 题目链接:https://www.luogu.com.cn/problem/P4606 题目大意 给出nnn个点mmm条边的一张图,qqq次询问给出一个点集,询问有多少个点割掉后可以是点集中至少一个点对不连通。 解题思路 就是问圆方树上的虚树中的圆点数量,照着统计就好了…

【二分】雪(luogu 7405)

正题 luogu 7405 题目大意 坐标轴上有n个雪球,初始重量为0,每一条线段上有重量为1的雪,当雪球经过时,会加上这些雪,而地上就没有雪了 共有m个时刻,每个时刻会使所有雪球向左/右移动wiw_iwi​格&#xff…

Visual Studio 2017 与 Visual Studio for Mac 支持更新

微软在博客中简单介绍了关于 VS 2017 和 VS for Mac 项目的支持计划:https://blogs.msdn.microsoft.com/visualstudio/2018/10/05/visual-studio-2017-and-visual-studio-for-mac-support-updates/。微软表示,在目前努力开发 Visual Studio 2019 的同时&…

牛客练习赛 67——ST表

A.牛牛爱字符串 注意原字符串有空格&#xff0c;不要用cin #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<string> #include<iostream> #include<algorithm> using namespace std; int main() {IO;int …

【每日一题】8月3日题目精讲—小A的最短路

来源&#xff1a;牛客网&#xff1a; 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 3秒&#xff0c;其他语言6秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 小A这次来到一个景区去旅游&#xf…

Stack(nowcoder 11253-K)

正题 nowcoder 11253-K 题目大意 有n个数&#xff0c;依次加进栈中&#xff0c;每次加入前将栈顶比aia_iai​大的所有元素弹掉&#xff0c;加入后记bib_ibi​为栈的大小 现在给你b中的一些数&#xff0c;让你求a数组的一种合法方案&#xff0c;其中1~n在a中各出现了一次 解题…

P4424-[HNOI/AHOI2018]寻宝游戏【结论】

正题 题目链接:https://www.luogu.com.cn/problem/P4424 题目大意 nnn个mmm位二进制数&#xff0c;开始是一个000。 然后依次对所有二进制数进行nnn次andandand或者ororor操作。 qqq次询问给出二进制数rir_iri​&#xff0c;要求有多少种操作序列使得操作完后的数是rir_iri​…

ASP.NET Core中使用表达式树创建URL

当我们在ASP.NET Core中生成一个action的url会这样写&#xff1a;var url_urlHelper.Action("Index", "Home");这样的写法存在的问题在于我们传递了两个字符串类型的参数&#xff0c;而我们又无法避免对action和controller做重命名操作, 例如将index重命名…

牛客练习赛 66

A.平方数 讨论一下最接近它的两个平方数即可。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<cmath> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; int main(…

在你的andorid设备上运行netcore (Linux Deploy)

最近注意到.net core 的新版本已经开始支持ARM 平台的CPU, 特意去Linux Deploy 中尝试了一下&#xff0c;真的可以运行 Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.9.65-perf armv8l)* Documentation: https://help.ubuntu.com/Ubuntu 16.04 LTS [running via Linux Deploy]La…

【每日一题】8月6日题目精讲—追债之旅

来源&#xff1a;牛客网&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 65536K&#xff0c;其他语言131072K 64bit IO Format: %lld文章目录题目描述题解&#xff1a;代码&#xff1a;题目描述 小明现在要追讨一笔债务&#xff0c…

【结论】只不过是长的领带(luogu 6877)

正题 luogu 6877 题目大意 给你n1个数aia_iai​和n个数bib_ibi​&#xff0c;cic_ici​为不选aia_iai​时&#xff0c;重新调整剩下n个数的位置后&#xff0c;∑i1nmax(ai−aj)\sum \limits_{i1}^{n}max(a_i-a_j)i1∑n​max(ai​−aj​)的最小值,求c数组 解题思路 不难发现让…

P3273-[SCOI2011]棘手的操作【线段树,并查集】

正题 题目链接:https://www.luogu.com.cn/problem/P3273 题目大意 nnn个点有权值&#xff0c;要求支持操作 连接两个点单点加权联通块加权全图加权单点询问联通块询问最大值全图询问最大值 解题思路 把所有可能产生的联通块都变到一个区间里就好了 考虑怎么排这个东西&…

牛客练习赛 65 (待补E-网络流)

A.最值序列 排序后&#xff0c;前一半加后一半乘即可。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int N500010; cons…

持续集成配置之Nuget

Intro本文是基于微软的 VSTS(Visual Studio Team Service) 做实现公众类库的自动打包及发布。之前自己的项目有通过 Github 上的 Travis 和 Appveyor&#xff0c;这次主要是用 VSTS 来做的&#xff0c;对比 appveyor 和 vsts 上的持续集成&#xff0c;vsts 上微软把常用的工具和…