首页 > 其他分享 >DOT 学习笔记

DOT 学习笔记

时间:2023-05-15 18:12:15浏览次数:46  
标签:遍历 text 离线 笔记 儿子 学习 节点 DOT

开始大恶补图论了。

说句闲话,\(\text{ODT}\) 和 \(\text{DOT}\)。

\(\text{DOT}\),全称「树上启发式合并(\(\text{dsu on tree}\))」,乍一听这个算法十分有智慧的样子,实际上也确实是一个人类智慧,他的本质就是「离线 + 节点合并」,听着复杂度似乎很扯,但是实际上它是正确的,但是我不会证明。

给个例题详细感受一下:

从前有棵树,节点有颜色,每次单点问,子树颜色数,询问 \(\text{1e7}\),时限 \(1.5\)

首先,直觉告诉我们,这个题如果是树套树的在线做法肯定是 GG 的,因为这个询问次数就不大想让你在线做。

既然我们不能在线做,那我们就把询问离线下来。

首先,在 \(\text{DOT}\) 的眼中,我们只有「重儿子」和「轻儿子」(和重链剖分一样),然后我们进行类似如下的操作:

  • 递归遍历轻儿子,计算它们的答案,但不保留影响。
  • 递归遍历重儿子,计算它的答案,并保留影响。
  • 遍历轻儿子的子树节点,合并轻儿子的答案。

这样,我们遍历了一次重儿子,两次轻儿子,这样肯定是最划算的。

但是为什么可以这么做呢?我也不清楚,但是我们 \(\text{OI-Wiki}\) 上给出了证明,大家可以看一看。

标签:遍历,text,离线,笔记,儿子,学习,节点,DOT
From: https://www.cnblogs.com/larry76/p/17402730.html

相关文章

  • python基础学习-读写CSV文件
    CSV文件介绍参考:Python-Core-50-Courses/第23课:用Python读写CSV文件.mdatmaster·jackfrued/Python-Core-50-Courses(github.com)CSV 全称逗号分隔值文件是一种简单、通用的文件格式,被广泛的应用于应用程序(数据库、电子表格等)数据的导入和导出以及异构系统之间的数据......
  • python基础学习-用Python操作Word和PowerPoint
    参考链接:Python-Core-50-Courses/第26课:用Python操作Word文件和PowerPoint.mdatmaster·jackfrued/Python-Core-50-Courses(github.com)......
  • python基础学习-用Python读写Excel文件
    参考链接:Python-Core-50-Courses/第24课:用Python读写Excel文件-1.mdatmaster·jackfrued/Python-Core-50-Courses(github.com)Python-Core-50-Courses/第25课:用Python读写Excel文件-2.mdatmaster·jackfrued/Python-Core-50-Courses(github.com)......
  • 天鹰优化算法AO优化核极限学习机KELM参数做多输入单输出的拟合预测建模。
    天鹰优化算法AO优化核极限学习机KELM参数做多输入单输出的拟合预测建模。程序内注释详细直接替换数据就可以使用。程序语言为matlab。程序直接运行可以出拟合预测图,迭代优化图,多个预测评价指标。ID:9340689735052218......
  • 鲸鱼优化算法WOA优化卷积神经网络CNN的学习率和隐含层神经元个数做多输入单输出的拟合
    鲸鱼优化算法WOA优化卷积神经网络CNN的学习率和隐含层神经元个数做多输入单输出的拟合预测建模。程序内注释详细直接替换数据就可以使用。程序语言为matlab。程序直接运行可以出拟合预测图,迭代优化图,线性拟合预测图,多个预测评价指标。。PS:以下效果图为测试数据的效果图,主要目的......
  • 【阅读笔记】四月
    五.画蛇添足系统的架构师都会有一种诱惑,设计一个完美的系统,这个系统会覆盖到需求的方方面面,并且这个系统要没有任何的bug。但是呢,这个诱惑通常会在需求的变更,进度的压力,团队的其他成员无法准确理解,或者甚至是新手程序员经验不足的各种情况下,逐渐陷入一个没完没了的焦油坑中......
  • pandas常用学习
    importpandasaspdclasspandas():def__int__(self):passdefcreat_dataframe(self):data={"a":[1,2],"b":["test1","test2"]}#使用字典加列表的形式创建dataframe,colums为字典的key,index可以自定义......
  • 程序员修炼之道阅读笔记01
    程序员修炼之道—从小工到专家 是我这学期阅读的第二本书,这本书的前言中告诉了我们这本书的大体内容,它将告诉我们我们怎样以一种我们等够遵循的方式去编程。在刚开始读这本书的时候,我的收获就很大,我们要做注重实效的程序员,那么什么是注重实效的程序员呢?1、这需要我们......
  • 梦断代码阅读笔记02
    第六章:完成设计方案卡普尔认为,软件设计不仅只是在程序员代码之上覆盖一层诱人的图形。它是一种设想用户需求并在软件结构中满足这些需求的创造性基础工作。在软件世界中,集成(integration)的意思就是把一段运行正常的代码连接到某个程序中另一段运行正常的代码上。良......
  • 梦断代码阅读笔记01
    第一章:软件时间代码语言高速发展,人们对软件的要求越来越高,但是目前的软件产品却满足不了广大用户的需求,所以开发者也一直行走在改错的道路上。作者迷恋于一个开放代码并可以由游戏玩家更改程序的一个游戏,并为在它的基础上创新和增添一些功能而乐此不疲。0代表程序员的思......