Peter算法小课堂—树上建模

太戈编程1720题

题目描述:

传说有一个大家族里共n名男性成员,编号1到n。其中共有n-1条父子关系。现在他们要挑选若干人组成家族护卫队抵抗外族入侵。i号成员的战斗力为zi, 大家当然希望挑选最强护卫队。但是为了防止"父子矛盾"的魔咒应验,大家决定不会让父子两人同时入选。请问护卫队选出的队员总战斗力最大是多少?

这题简称"树上最优独立集"。我们知道把一个树拉直后就会成为一条树链。

那么思考一下如何DP,如何定义状态。

那状态转移方程呢?

具体的话还是dfs啊

太戈编程861题

题目描述:

二战中,空军司令lester奉命布置对敌方阵地的轰炸,以破坏其通讯体系。敌方通讯网络共n个节点,之间有n-1条双向直接通信通道。轰炸之前,任意两个节点都可以通过直接或间接通信取得联系。lester的弹药量很有(han)限(chan),只能炸毁其中一个节点,与被炸节点的直接通信将被全部切断,而剩余n-1个节点将被分割成无法互相通信的若干区域,而每个区域内部仍可互相通信。lester想知道如何才能使剩下的仍可通信的最大区域最小

这题是个树的重心问题。

太戈编程763题

题目描述:

盗墓界的三巨头:lester天真无邪,葛胖胖,职业失踪z70。有一次他们去到一个古墓,共有n个墓室,通过n-1条双向通道相连(保证两两墓室都可达)。每条通道长1公里。lester他们不小心走散了,分别走到三个墓室lester位于x,葛胖胖位于y,z70位于z。现在葛胖胖和lester想知道他俩之间的距离是多少?

看了这张图,是不是感觉能做了?但是,时间复杂度为O(T*N),那要得运行多少次啊。 那思考一下,时间浪费在那里了?

那么我们手算以下样例,发现:路径必须经过u和v的最近公共祖先节点a。则路径长度为du-da+dv-da

最近公共祖先简称LCA,采取同步爬树法,代码如下

cpp 复制代码
int lca(int u,int v){
	while(u<v) u=p[u];
	while(v<u) v=p[v];
	while(u!=v) u=p[u],v=p[v];
	return u;
}
相关推荐
维克兜率天3 分钟前
【维克】技术指标是什么:从均线到MACD的数学原理
人工智能·笔记·python·算法·量化
Messy create7 分钟前
【储能系统三大核心】
网络·stm32·单片机·算法·能源
sel_914 分钟前
【vLLM】vLLM 推理框架详解:从 PagedAttention 到生产级部署实战
人工智能·深度学习·算法·语言模型·框架·vllm
XR12345678833 分钟前
办公大楼组网选型决策树:TCO 与三大品牌优劣对比总结
算法·决策树·机器学习
阳明山水1 小时前
Mamba路径如何建模长程时序依赖
人工智能·深度学习·算法·机器学习·架构
_Narcissus_2 小时前
分治&递归
数据结构·c++·笔记·算法·leetcode·递归·分治
明志数科2 小时前
具身智能数据工程全链路解析:从真实产线采集到LeRobot适配
网络·人工智能·算法
小O的算法实验室2 小时前
AAAI-26,Lehmer编码搜索排列空间的理论与实证分析
算法
lch2011_yb2 小时前
CSP-S 2023 密码锁 题解
算法
OPEN-F3 小时前
C++进阶教程:运算符重载与类型转换
java·c++·算法