【讲题】Galaxy OJ 树形DP专题
树形DP专题
【题目传送门】
实际上我开始写题解的时候也没有全部A(我好弱)
T1 没有上司的舞会
首先要设计 状态:
设 为当节点 不去时,以 为根的子树产生的最大欢乐值;
设 为当节点 去时,以 为根的子树产生的最大欢乐值。
我们假设现在 到节点 ,节点 是 的一个子节点,现在我们需要分类讨论:
若 去,则 不可以去,即 ;
若 不去,则 可去可不去,即 。
综上所述,我们得到了正解。
T2 寻宝
这是一道树上背包的题
我们设 为在以 为根的子树上探险 天,所能获得的最大价值。
首先 遍历整一棵树,对于节点 和它的子节点 ,为了求出 可以这样做:
先在 枚举 ,接着在 范围内枚举在以 为根的子树中的探险时间 。
所以 获得了值为 的增益。然而 天没有全部用完,所以 还要加上 。
综上所述,状态转移方程为
T3 完美服务器
这道题是 的升级版。
我们发现这一道题的每一个节点都与它周围的节点有关系,于是我们仿照 写出了状态转移方程:
设 为当节点 为服务器时,以 为根的子树最少设置的服务器数量;
设 为当节点 有一个子节点为服务器时,~
设 为当节点 的父亲节点为服务器时,~
接着是愉快的分类讨论推方程,我们的目标是求出 :
若 ,就表示 为服务器,原式的初始值为 。因为 为服务器,那么 的状态只可以是服务器(0)或父亲为服务器(2),即 ;
若 ,就表示 的儿子中有且仅有一个服务器。我们将状态转化一下可以得到: 表示 是服务器,父亲和儿子都不是; 表示 的父亲是服务器,儿子节点都不是。现在我们需要枚举 使得 的儿子中仅仅有 是服务器时的答案,所 以 ;
若 ,就表示 的父亲是服务器,但儿子都不是。所以方程为 。
综上所述,我写得有点累……
T4 “访问”术馆
这一道题和 是同样的做法,需要注意的是因为题目要求的是在警察赶到之前,所以答案不是 , 而是 。
【无代码】
T5 聚会的快乐
这是一个披着 幌子的假 。(为什么我一直是90分?!)
【无代码】
T6 世界杯
T7 有线电视网
这道题也是树上背包,与T2有异曲同工之妙。
设 表示在以 为根的子树中,选 个用户获得的最大收益。
假设节点 是 的一个儿子,我们在 的子树中选 名用户,在 的子树中选 名用户,可以得到: 。对于每个叶子节点 ,都有 。
之后,找到一个最大的 使得 , 即为答案。
T8 重建道路
和 的题解是大佬QSH写的~
本文作者:ExplodingKonjac
本文链接:https://www.cnblogs.com/ExplodingKonjac/p/13436141.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
· 当加密ID需要变成Guid:为什么我选择了AES-CBC而非GCM?
· 基于 epoll 的协程调度器——零基础深入浅出 C++20 协程
· 下划线字段在golang结构体中的应用
· SQL Server也能玩正则表达式?
· CUDA 编程初探
· 家里有密码锁的注意了,这真不是 BUG,是 feature。
· C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
· 直击痛点的开源项目「GitHub 热点速览」
· C# 13 与 .NET 9 跨平台开发实战(第一章:开发环境搭建与.NET概述-上篇)
· 我的AI自学路线,可能对你有用