10 2019 档案
摘要:这一篇博客将教你什么? 如何用LCT打延迟标记,LCT和线段树延迟标记间的关系,为什么延迟标记要这样打。 ——正片开始—— 学习这一篇博客前,确保你会以下知识: Link-Cut-Tree,普通线段树 当然,不会也没有关系,你可以先收藏这篇博客,等你学了以后再来看。 最好通过了这一道题:【模板】线段
阅读全文
摘要:前面的文章介绍了如何用Tarjan算法计算无向图中的e-DCC和v-DCC以及如何缩点。 本篇文章资料参考:李煜东《算法竞赛进阶指南》 这一篇我们讲如何用Tarjan算法求有向图的SCC( 强连通分量 )已经如何缩点。 给定一张有向图,若对于图中任意两个节点x和y, 既有x到y的路径,又有y到x的路
阅读全文
摘要:上一篇讲了如何应用Tarjan算法求出e-DCC和v-DCC。 那么这一篇就是e-DCC和v-DCC的应用之一:缩点。 先讲e-DCC的缩点。 我们把每一个e-DCC都看成一个节点,把所有桥边(x,y)看成连接编号为c[x]和c[y]的两个e-DCC间的边,这样我们就会得到一棵树或者森林(原图不连通
阅读全文
摘要:这篇介绍如何用Tarjan算法求Double Connected Component,即双连通分量。 双联通分量包括点双连通分量v-DCC和边连通分量e-DCC。 若一张无向连通图不存在割点,则称它为“点双连通图”,不存在桥则称为“边双连通图”。 无向图的极大点双连通子图就v-DCC,极大边双连通子
阅读全文
摘要:RobertTarjan真的是一个传说级的大人物。 他发明的LCT,SplayTree这些数据结构真的给我带来了诸多便利,各种动态图论题都可以用LCT解决。 而且,Tarjan并不只发明了LCT,他对计算机科学做出的贡献真的很多。 这一篇我就来以他名字命名的Tarjan算法可以O(n)求出无向图的割
阅读全文
摘要:这一篇讲线段树优化建图。 发现网上关于线段树优化建图的博客很少而且讲的不是很详细,很多人会看得比较懵。 于是原本这一篇打算讲树链剖分的就改成讲优化建图了。 前置知识:动态开点线段树 看到标题你可能会感觉奇怪,线段树和建图有什么关系? 事实上,线段树优化建图就是利用两棵线段树,减少连边数量,达到降低复
阅读全文
摘要:这一篇来讲讲线段树合并。 前置知识:动态开点线段树 还是一样先给一道例题:[JOI2012] Building2 题面是日文的,这里给出中文翻译: 有n个城市,它们组成了一棵树。 第i个城市有一座高度为Hi的建筑。 你需要选择一条尽量长路径,设路径中有k个点, 依次分别为i1,i2,⋯ik−1,ik
阅读全文
摘要:可持久化线段树又名主席树,是“可持久化”的线段树 (废话) 它能干什么呢? 我们来看这样一道题:【模板】可持久化线段树 题目要求我们支持两种操作,修改历史版本和查询历史版本。 我们可以很轻松地想到一个显然的做法:对每个历史版本开一棵线段树并且储存下来。 OK,这就是可持久化线段树了... 吗? 当然
阅读全文
摘要:不了解线段树的朋友可以看看我上一篇博客: [线段树系列] 普通线段树 补充一个上一篇漏了的点:线段树要开4倍空间。 然而面对庞大的数据我们开maxn<<2的空间是肯定开不下的。 这时候就要用到动态开点线段树来节省空间了。( 或者离散化 ) 动态开点线段树大概长这样( 又是随手画的一个图 ): 理解一
阅读全文
摘要:线段树是一种强大的数据结构,用于维护区间、图、树等各种数据。 线段树的“强大”体现在它面对各种类型的数据都有应付的方式,而且不断有“改进”版线段树的产生。 线段树是基于递归和分治思想的数据结构,一般用于维护具有“区间可加性”的数据。 什么是”区间可加性“呢,举几个例子: 区间和,区间最大最小值,区间
阅读全文

浙公网安备 33010602011771号