线段树优化建图 在有些数据范围内是不允许我们把图上的所有边建出来的 然后我们对编号为下标建线段树 线段树上的每个节点的 \(l\) 和 \(r\) 就是把 \(l\rightarrow r\) 中的所有点缩到一个点表示了 然后这里我们完善一下: 把每个点拆一下,成一个入点,一个出点,分别 ...
这一篇讲线段树优化建图。 发现网上关于线段树优化建图的博客很少而且讲的不是很详细,很多人会看得比较懵。 于是原本这一篇打算讲树链剖分的就改成讲优化建图了。 前置知识:动态开点线段树 看到标题你可能会感觉奇怪,线段树和建图有什么关系 事实上,线段树优化建图就是利用两棵线段树,减少连边数量,达到降低复杂度的目的。 听起来好像很神奇,其实实现非常简单。 我们来看这一道题:CF B Legacy 题目描述 ...
2019-10-29 20:00 12 551 推荐指数:
线段树优化建图 在有些数据范围内是不允许我们把图上的所有边建出来的 然后我们对编号为下标建线段树 线段树上的每个节点的 \(l\) 和 \(r\) 就是把 \(l\rightarrow r\) 中的所有点缩到一个点表示了 然后这里我们完善一下: 把每个点拆一下,成一个入点,一个出点,分别 ...
一个点向一个点连边太easy了。 现实有的时候并没有这么简单。 对于这样的一类问题:需要多次(m=1e5次左右)从一个编号在[L1,R1]的区间内的所有点,向另一个编号在[L2,R2]的所有点之间分别连权值相同的边。 求S到T的最短路,或者其他的信息。 就是一个建图的辅助工具。解题 ...
一、引入 先来看一道题:CF786B Legacy。 题目大意:有 \(n\) 个点、\(q\) 次操作。每一种操作为以下三种类型中的一种: 操作一:连一条 \(u\to v\) 的有向 ...
这一篇来讲讲线段树合并。 前置知识:动态开点线段树 还是一样先给一道例题:[JOI2012] Building2 题面是日文的,这里给出中文翻译: 有n">n">n个城市,它们组成了一棵树。 第i">i个城市有一座高度为Hi">Hi的建筑。 n">n">i">Hi">你需要选择一条尽量长 ...
总原理: 将[1,n]分解成若干特定的子区间(数量不超过4*n) 用线段树对“编号连续”的一些点,进行修改或者统计操作,修改和统计的复杂度都是O(log2(n)) 用线段树统计的东西,必须符合区间加法,(也就是说,如果已知左右两子树的全部信息,比如要能够推出父节点);否则,不可能通过分 ...
浅谈线段树优化DP 本篇随笔浅谈一下线段树优化DP。 一、关于DP优化的两种方式 DP算法是大家耳熟能详的最优化算法之一。 有的时候,我们设计DP的时候,需要采取措施进行DP优化来适应题目对时间空间的要求。 一般来讲,DP的优化有两种方式:第一种是针对状态设计进行优化。比如滚动数组 ...
不了解线段树的朋友可以看看我上一篇博客: [线段树系列] 普通线段树 补充一个上一篇漏了的点:线段树要开4倍空间。 然而面对庞大的数据我们开maxn<<2的空间是肯定开不下的。 这时候就要用到动态开点线段树来节省空间了。( 或者离散化 ) 动态开点线段树大概长这样( 又是随手 ...
目录 为什么要使用线段树? 什么是线段树? 创建一棵线段树 线段树的查询操作 线段树的更新操作 为什么要使用线段树? 最经典的线段树问题:区间染色 有一面墙 ,长度为n,每次选择一段儿墙进行染色,m次操作后 ...