自己风格的板子 = = 考试时别把板子码错就好 = = 一、数据结构 1.树状数组单点修改区间查询(luogu3374) 2.树状数组区间修改区间查询(luogu3372) 3.线段树区间修改区间查询(luogu3373) 4.Treap(loj104) 5.Splay(loj105) 6.主席树查 ...
分类:
其他好文 时间:
2017-07-16 12:36:09
阅读次数:
285
补坑咯~ 今天围绕的是一个神奇的数据结构:线段树。(感觉叫做区间树也挺科学的。) 线段树,顾名思义就是用来查找一段区间内的最大值,最小值,区间和等等元素。 那么这个线段树有什么优势呢? 比如我们要多次查询1-n中的最大值,那么我们如果使用暴力来查找,那么我们每次查找的复杂度就是O(n) 但是如果我们 ...
分类:
其他好文 时间:
2017-07-15 16:49:04
阅读次数:
136
题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来M行每行包含3或 ...
分类:
其他好文 时间:
2017-07-14 20:34:56
阅读次数:
304
思路: 线段树区间修改。标记记录当前区间是否被切。 ...
分类:
其他好文 时间:
2017-07-12 15:25:46
阅读次数:
77
一般说来,树状数组比线段树好写得多,可是只用于单点修改。 然后最近学到一种区间修改的方式,区间加区间求和。 这里我们不直接维护原数组,而是引入另一个数组b[i],表示和前一个数的差是多少。 这样的话a[i]就可以表示为b[1]+b[2]+b[3]……b[i],相对应的,sum(i)就是b[1]+b[ ...
分类:
编程语言 时间:
2017-07-09 21:59:04
阅读次数:
154
线段树的区间修改 区间绝对标记 改成同一个数 注意打标记前 要先判断 是否有标记 这道题不能像加法标记一样 标记初始化为 0 如果这道题 可以将数变成 0 那么0 就不能为初始值了 然后我们初始值要选择一个不会被干扰到的数字 比如 -1 就不会变成 -1 另外还要注意在标记清空时 要将标记 变成 - ...
分类:
其他好文 时间:
2017-06-29 10:08:26
阅读次数:
216
思路: 有点类似于区间修改点查询的树状数组。 实现: ...
分类:
其他好文 时间:
2017-06-25 18:39:27
阅读次数:
137
题目见洛谷P3372 已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 简单来说就是需要支持区间修改(区间加)和区间查询。 (貌似也可以用分块和树状数组水过的样子,虽然我暂时并不知道树状数组是怎么做到的(嗯,以后一定会学的)) 因为数据范围long lo ...
分类:
其他好文 时间:
2017-06-18 13:18:40
阅读次数:
135
1、概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,它基本能保证每个操作的复杂度为O(lgN)。 2、线段树基本操作 线段树的基本操作主要包括构造线段树,区间查询和区间修改。 (1) 线段树构造 首先介绍构造线段树的方法:让根节点表示 ...
分类:
其他好文 时间:
2017-06-13 17:05:12
阅读次数:
253