数据结构
文章平均质量分 76
数据结构
SWUST_Vector
心怀希望的人最强大!!!
展开
-
树状数组维护区间最值问题
使用树状数组需要理解其具体原理。,记住其维护的区间是。原创 2023-11-05 14:18:35 · 368 阅读 · 0 评论 -
可持久化线段树(To the moon)
理解:可持久化线段树,对一组数据建立多棵线段树来维护其状态,在建立新的线段树时可以合用不变的部分以减小内存开销。多棵线段树能确保将多种状态保存,互不影响。 To the moon 题意:给一组数,m次操作: C l r d 将l ~ r区间的数加上d,操作一次时间t加一。 Q l r 查询l ~ r区间和。 H l r t 查询第t次l ~ r区间和。 B t 回到第t次,t次之后的作废; 这道题在处理线段树lazy标记时没有将其向下压,因为为了不对前面线段树产生影响只能在每一个更改区间新建树才可以,内存原创 2020-07-22 21:07:04 · 233 阅读 · 0 评论 -
扫描线——Colourful Rectangle
Colourful RectangleHDU4419 题意: 给定矩形坐标(左下,右上)和颜色属性,颜色一共有三种单一颜色及其混合颜色。分别为R、G、B、RG、RB、GB、RGB七种。求给定矩形所组成图形的每种颜色的面积。 分析: 题目中给了三种颜色和它们的混合色,故需要用数字来代替它们并可以相互转换。用1,2,4代表三种单一的颜色R、G、B,那么1|2,1|4,2|4,1|2|4,分别代表了RG、RB、GB、RGB四种颜色,十进制值为3,5,6,7。 利用扫描线解决该问题主要需要解决在线段树上保存每一个颜原创 2020-07-18 22:49:53 · 173 阅读 · 0 评论 -
扫描线模板代码详讲Atlantis
HDU1542Atlantis 题意: 求矩形块总面积,给定n个矩形坐标(左下角和右上角坐标),坐标有可能是小数。 分析:本题是一道扫描线模板问题。 扫描线就是按照x轴或者y轴的一个方向去扫描维护整个y值或x值所对应的线段总长。例如:矩形a:(1,1)(3,3)矩形b:(4,1)(6,3),当y=1时线段总长度为4,y=3时总长度为4; 利用线段树来维护,线段的长度。 有些情况需要对数据离散化处理。 在本题中只需要对y轴进行扫描即可,再利用线段树维护区间的长度,面积直接用线段的长度乘上高就行了。 #incl原创 2020-07-16 22:09:31 · 178 阅读 · 1 评论 -
莫队板子
HDU-4638 题意: 给定n个数,值为1~n。m次询问,每次询问一个区间内拥有连续数段有多少个。 解法: 1、利用树状数组可以做。 2、利用莫队暴力访问(更简单); 莫队做法: 我们知道莫队是对询问区间进行处理的,因此需要去寻找区间变化过程中的情况和对答案的影响。 假定区间(l,r),若要加一个数x进去则只需判断x-1,x+1在(l,r)分布即可。 有四种情况: a、x+1,x-1两个都没有在(l,r)则新增了一组数,故cnt++; b、x+1,x-1两个都在(l,r)则该数将两组数连在一起了减少了一组原创 2020-07-15 23:30:56 · 241 阅读 · 0 评论 -
RMQ算法模板题
poj3264 题意:给定一个长度为n的数组,m次访问,每次访问一段数组区间的最大值和最小值之差。 这道题可以运用线段树解决,也可以用RMQ解决: 1.线段树 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <cmath> #include <queue> #include <vector> #def原创 2020-07-08 18:56:52 · 246 阅读 · 0 评论 -
dfs序+树状数组
Apple Tree There is an apple tree outside of kaka’s house. Every autumn, a lot of apples will grow in the tree. Kaka likes apple very much, so he has been carefully nurturing the big apple tree. The t...原创 2020-01-19 10:20:38 · 303 阅读 · 0 评论 -
莫队板子
Chika and Friendly Pairs Chika gives you an integer sequence a1,a2,…,an and m tasks. For each task, you need to answer the number of " friendly pairs" in a given interval. friendly pair: for two integ...原创 2020-01-18 19:12:50 · 144 阅读 · 0 评论 -
带权并查集(模板)
带权并查集 算法思想:维护节点到前导节点的距离; HDU3047 #include <bits/stdc++.h> using namespace std; const int N=54321; int dis[N],pre[N]; inline int find(int x) //find()函数,寻找根节点+路径压缩(前导节点,维护路径); { if(x==pre[x]...原创 2020-02-27 14:07:15 · 218 阅读 · 0 评论 -
扫描线板子题
Picture A number of rectangular posters, photographs and other pictures of the same shape are pasted on a wall. Their sides are all vertical or horizontal. Each rectangle can be partially or totally c...原创 2020-01-16 19:50:46 · 360 阅读 · 0 评论 -
分块模板
分块模板 题目 分块暴力; #include<bits/stdc++.h> using namespace std; const int N=1e5+55; int a[N],l[N],r[N],head[N],lazy[N]; //a,存输入数据,l存第i块的左边界,r记录第块的右边界,head[]记录点在哪一块 int n; ...原创 2020-01-16 17:01:57 · 164 阅读 · 0 评论 -
主席树模板题
I - Super Mario Mario is world-famous plumber. His “burly” figure and amazing jumping ability reminded in our memory. Now the poor princess is in trouble again and Mario needs to save his lover. We re...原创 2020-01-15 17:55:32 · 210 阅读 · 0 评论 -
数据结构——字典树
高大上,实用,真香; 字典树,顾名思义:用来当成字典用的 树型结构处理方式——(两种应用:1.字母数,2. 01字典树) 几个模块:1.建树。2.查询树。3.删除一些元素。 上图 这是一棵存储单词的字典树,数组tree[N][26], 表示字典树,图中的数字就是开辟空间的大小,从上至下每当没有相同字母时就开辟新的空间(代码中见详解),增加分支; 这儿需要注意的是:要灵活使用辅助数组进行,标记或者...原创 2019-07-29 20:42:40 · 195 阅读 · 0 评论 -
数据结构——树状数组
树状数组(Beautiful数据结构) 树状数组,又名前缀树,是很实用的工具,顾名思义树状数组(树型结构的数组,一种存储方式) !!!!!由子树构成的大树,大数; 上图就是其形象的结构图样。A[1]->C[1] ; C[2]->A[1]+A[2] ; C[3]->A[3] ; C[4]->C[2]+C[3]->A[1]+A[2]+A[3]+A[4]...原创 2019-07-29 19:15:02 · 170 阅读 · 0 评论 -
数据结构——线段树
线段树(一种二叉搜索树) 树形结构的特点让它更方便查询搜索。 线段树方便与对区间查询,区间更新维护,这是因为树上的父亲节点表示了一段区间。叶子结点才是原始的元素。 如上图所示: 利用线段树解决问题的步骤如下(以模版题——给N个数,求任意区间合为例子): 对于这个算法个人认为必需理解:1.在建树时怎样将树全部遍历,将节点处理成区间和。2.在维护区间时利用lazy标记将数据添加到树中,并且如何在需...原创 2019-07-28 12:28:16 · 168 阅读 · 0 评论