提升——树形DP

news/2024/7/9 18:16:17 标签: 人工智能

这里讲提高一点的内容,所以没有树形DP基础的,先看一下基础部分:

浅说——树形DP

 闲言不表,看第一题。

这道题是典型的树上最长链问题。(就是一个模板题)

给定一棵树,树上共有N个节点(N<=5000) ,树上节点的编号从1到N,每个节点的儿子个数最多为N-1。

请求出这棵树上的经过节点数最多的一条不重复的链。

输入: 第一行一个数N,表示树有N个节点。 接下来N行,每行第一个数为Xi(0<=Xi<=N-1),表示编号为i的节点的儿子个数为Xi,接下来Xi个数,依次表示每一个儿子的编号。Xi为0表示没有儿子。

输出: 一行一个数,表示最长链经过的节点个数。 (内存限制10M)

样例输入:

8
3 2 3 4
2 5 6
0
1 7
0
0
1 8
0

样例输出:

 

6

 

问题分析

目标:如图计算1为根的树上最长链

动机:通过分析子树的相关信息,算出目标值

分析有两种情况:

一、最长链不经过1号节点.

这种情况下,找到的点A一定是最长链的一个端点。

由于1是最长链上的点,那么最长链的另一个端点到T的距离是一定的,因此A到T必定要取最长的距离,该链才能最长。此种情况容易理解,不加赘述。

二、最长链经过1号节点。

若T不在最长链上,则最长链必定在T的一个子树中。上图中最长链就在以C为根的子树中。

那么我们可以下一个结论:找到距离T最远的一个点A,那么A必定是最长链的一个端点,且从A到T的路径必定与最长链重合从A到C的这一段。

下面我们来证明结论:

假设T的最长链在子树C中,且子树C中最深的节点A对于根节点T的深度为h(A)。如果距离T最远的某个节点P不在子树C中,那么P-T-C-A的长度一定大于子树C中最长链的长度,与T中最长链在子树C中的条件矛盾。所以A必为最长链的一个端点,然后再一次搜索找到距离

A最远的节点B,AB即为最长链。
持续更新中……

转载于:https://www.cnblogs.com/mzyczly/p/10848565.html


http://www.niftyadmin.cn/n/1152326.html

相关文章

Tkinter 控件详细介绍

Tkinter 控件详细介绍 1.Button 按钮。类似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操作/事件 2.Canvas 画布。提供绘图功能(直线、椭圆、多边形、矩形) ;可以包含图形或位图 3.Checkbutton 选择按钮。一组方框,可以选择其中的任意个(类似 HTML 中的 checkbox…

Java字符串与数组的学习笔记

文章目录字符串创建和存储的机制""、equals和hashCode有什么区别String、StringBuffer、StringBuilder和StringTokenizer数组length属性与length()方法字符串 创建和存储的机制 String 的实现采用了Flyweight 的设计模式 当执行 String "abc"时&#xf…

Apollo与Spring集成 - 源码分析

Spring XML方式&#xff1a; 通过Namespace集成&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns:apollo"http://www.ctrip.com/schema/apollo" xsi:schemaLocation"http://www.ctrip.com/schema/apoll…

excel隔行取数据

有时候在做excel的时候&#xff0c;是希望可以实现隔行提取一个某列的数据&#xff0c;例如我下面的这个表格&#xff0c;想分别将1、3、5…和2、4、6…行数据取出来 好用的公式推荐出来 1、3、5…和2、4、6…行数据取出来 在空白单元格输入OFFSET(A2,ROW(A2)-2,0) 或OFFSET(A1…

HDU 3362 Fix

状压DP。 首先很容易想到&#xff1a;一个点要被固定的话&#xff0c;必须有两个已经固定了的点与这个点连边。 再看N的范围&#xff0c;秒想到状压DP&#xff0c;秒出思路。1表示这个点已经被固定&#xff0c;0表示还没被固定。 推导某个状态的时候&#xff0c;枚举一下这个状…

Java的序列化学习笔记

文章目录概念特点使用的场景SerialVersionUID概念 序列化是将对象用一串字节流描述的过程&#xff0c;用于解决再对象流读写操作中发生的问题。 特点 如果一个类能被序列化&#xff0c;那么其子类也可以被static修饰的成员变量和被transient修饰的对象临时数据&#xff0c;不…

SpringBoot整合c3p0 - automaticTestTable not exist

在SpringBoot2.1.3版本中集成c3p0数据库连接池&#xff1a; application.properties&#xff1a; c3p0.jdbcUrljdbc:mysql://localhost:3306/demo?useUnicodetrue&characterEncodingutf-8&allowMultiQueriestrue&serverTimezoneGMT c3p0.userroot c3p0.passwordr…

00Cascading Style Sheet

Cascading Style Sheet CSS&#xff08;Cascading Style Sheet&#xff09;即层叠样式表&#xff0c;简称样式表。要理解层叠样式表的概念先要理解样式的概念。样式就是对网页中的 元素&#xff08;字体、段落、图像、列表等&#xff09;属性的整体概括&#xff0c;即描述所有网…