妙妙 DP 题
给定一棵 节点的树,求有多少个三元节点对使得任意两个点之间距离相等。。
高端的题目,往往只需要朴素的题面。
经过观察得到,满足上述条件的节点对在有根树中只有两种形态:
对于左面一种形态,我们设 表示 子树内与 距离为 的节点的个数。
对于右面一种形态,我们设 表示:
上图中, 构成一个合法三元组, 与 之间距离为 的二元组 个数。通俗地说, 已经凑成一对了,只要 往外走 步能找到一个点 ,那么 就构成了一个合法三元组。
先让我们想想如何统计答案。
首先,所有的 应该被累加进答案中。这对应着这种情况:
其次,对于所有的 应该被累加进答案中。这对应着这种情况:
这种情况的合法性不难想到, 到 距离为 ,此时 正好需要一个从 往外走 步的一个点,也就是 。
把这两种情况统计好即可做到不重不漏。
再思考如何转移。
对于 ,有 。
这是不难想到的。关键在于 的转移。
首先,所有的 是要累加进 的。这对应着这种情况:
需要往外找 步,因为 在 外面一步,所以 需要往外找 步,对应 。
其次,对于所有的 应该被累加进 中,这对应着这种情况:
此时,我们所有的工作就圆满完成了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】