线段树
文章平均质量分 67
Nekroz_
这个作者很懒,什么都没留下…
展开
-
【模板】可持久化数组
戳我可持久化数组是由可持久化线段树或可持久化平衡树实现的。这里先给出可持久化线段树的实现方法。为了方便起见,处理的数组长度为5, 起始的数组元素为1~5,修改是将第一个位置的数组元素改为2。 建树规则很简单,只要在叶子节点上写上该点的值就可以了。先根据原数组建一棵线段树第一次修改之后的线段树 我们发现,这两棵线段树中只有一个叶子节点的值发生了改变,而操作数非常多,假...原创 2018-05-17 21:24:45 · 934 阅读 · 0 评论 -
【模板】线段树区间合并
区间合并是一类问题的统称,种类很多,但在这篇博客中只需实现以下操作即可: 有一个01串,你有三种操作: 1.将[a, b]中的所有数字改成0 2.将[a, b]中的所有数字改成1 3.询问[a, b]中最长连续的1的长度是多少 前两种操作其实可以算作一个操作,重点在于如何高效地解决第三种操作。 虽说平衡树也可以解决这类问题,但是这里我们使用线段树来解决。这是一个经典的老套路...原创 2018-05-28 21:17:20 · 1515 阅读 · 2 评论 -
【模板】树链剖分
树链剖分在算法竞赛之中的运用和线段树一般灵活,所以说没有什么固定化的模板,只能以某些功能为例写模板。 这里就写出能够快速维护下面一些操作的树链剖分模板: 将树从x到y结点最短路径上所有节点的值都加上z 求树从x到y结点最短路径上所有节点的值之和 这里首先给出的不是普通的静态数组树链剖分,而是链表版本的树链剖分(连线段树也是链表版本的),假如已经做好准备,就继续看下去吧。先说一...原创 2018-05-04 19:57:50 · 210 阅读 · 1 评论 -
【模板】线段树
线段树是一种神奇的数据结构呀~~~ 由于线段树在OI中的运用十分灵活,没有固定性的模板,这里就给出能够完成以下操作的线段树: 1.给一段区间加上一个值 2.询问一个区间内数值的总和 很水对吧,所以这才叫模板。。。。 lazy−taglazy−taglazy-tag是个好东西,要养成写lazy−taglazy−taglazy-tag的好习惯。先码上一个链表版本的线段树:链表线段...原创 2018-05-04 19:43:05 · 546 阅读 · 0 评论 -
【题解】HDU3397 Sequence operation
传送门 原题是SCOI2010序列操作。HDU上的版本是其加强版(多组数据),还要初始化。我是不会对你说我不加初始化然后在HDU上WA了无数次的没错,这就是一道线段树区间合并和区间修改的综合模板神题。线段树区间合并不会的童鞋们请参考这。接下来讲讲如何实现这几种操作:0 a b change all characters into ‘0’s in [a , b] 意为把...原创 2018-05-31 19:20:36 · 251 阅读 · 0 评论 -
【题解】POJ3667 Hotel
传送门 一眼就知道是线段树区间合并,模板在[这][template],我就不解释了。 在这道题中,query()query()query()被改成了insert()insert()insert(),现在来讲讲如何实现insert()insert()insert()。因为2操作就是set()set()set(),所以自动略过。 考虑1操作: 首先在读入X后,用区间最大连续区间(即su...原创 2018-05-31 18:45:39 · 376 阅读 · 0 评论 -
【题解】HDU1540 Tunnel Warfare
传送门 题目大意就是说有n个村庄以及m个操作,这m个操作分别是:D x 毁坏一个编号为x的村庄R 重建最后一个毁坏的村庄Q x 询问编号为x的村庄直接或间接可以连接到的编号总数虽说这道题是线段树区间合并的模板题,但使用平衡树(本人使用的是STL库中强大的集合容器set代替手写平衡树)亦为此题的一个经典做法。 我们分析一下,使用一个序列(用set维护)和一个栈维护被毁坏的村庄(使...原创 2018-05-29 19:23:47 · 277 阅读 · 0 评论 -
【题解】Codeforces 786B Legacy
传送门 题目意思很简单,就是你有三种操作: 1 u v w 从u向v连一条权值为w的有向边 2 u L R w 从u向L至R的所有结点连一条权值为w的有向边 3 u L R w 从L至R的所有结点向u连一条权值为w的有向边 首先看到题目,马上就明白不是暴力能够解决的事情(毕竟人家是Div.1的B啊),但是看到L和R,正常人应该都会往线段树这里想一想。没错,标算就是线段树图论建模+最短路。...原创 2018-05-21 21:15:51 · 1331 阅读 · 1 评论 -
【题解】BZOJ 3674 可持久化并查集加强版
传送门 题目是可持久化并查集加强版,其实并没有加强,只是原题可以用离线算法水过,而这道题才是用来练可持久化并查集的板子题。 首先对于学习可持久化并查集有一个先决条件,就是学会用可持久化线段树实现可持久化数组,如果不会的可以戳这。 接下来我们就来讲讲怎么用可持久化数组实现可持久化并查集。 讲解所需要的图其实在这里面已经贴出来了,我在这里就不重贴了。主要讲讲该如何实现可持久化并查集的各个操作。...原创 2018-05-21 14:49:37 · 418 阅读 · 2 评论 -
【题解】BZOJ 3673 可持久化并查集
传送门 首先对于学习可持久化并查集有一个先决条件,就是学会用可持久化线段树实现可持久化数组,如果不会的可以戳这。 接下来我们就来讲讲怎么用可持久化数组实现可持久化并查集。 讲解所需要的图其实在这里面已经贴出来了,我在这里就不重贴了。主要讲讲该如何实现可持久化并查集的各个操作。 普通并查集只有查找和合并两个操作,相似的,可持久化并查集也有这两个操作。init和可持久化数组类似,建...原创 2018-06-26 21:01:45 · 280 阅读 · 0 评论