为了能到远方,脚下的每一步都不能|

Aurora-JC

园龄:3年粉丝:3关注:4

随笔分类 -  学习笔记

*【学习笔记】(7) 线段树及高级用法
摘要:一.普通线段树 线段树(Segment Tree)几乎是算法竞赛最常用的数据结构了,它主要用于维护区间信息(要求满足结合律)。与树状数组相比,它可以实现 O(logn) 的区间修改,还可以同时支持多种操作(加、乘),更具通用性。 接下来我们用这道模板题为例,看看线段树是怎么维护区间和这一信息
67
0
0
*【学习笔记】(4) 网络流
摘要:1.算法简介 网络 一个网络 G=(V,E) 是一张有向图,图中每条有向边 (x,y)E 都有一个给定的权值 c(x,y) ,称为边的的容量。特别的,若 (x,y)E, 则 c(x,y)=0。图中还有两个指定的特殊节点 \(S
29
0
0
【学习笔记】(13) 平衡树——记住不的板子
摘要:Treap Splay 无旋Treap——fhq treap 简介 就是没有旋转操作的 Treap,一些性质什么的都跟 Treap 类似。 算法介绍 (1)merge(x,y) 将两棵“有序”(x中元素的权值最大值小于 y 中元素权值最小值)的Treap合并成一棵。 int ch[N][2], sz
14
0
0
高维前缀和 (SOSDP)
摘要:介绍 一维前缀和 : s[i]=s[i1]+a[i] 二维前缀和: s[i][j]=s[i][j1]+s[i1][j]s[i1][j1] 当然也可以这么写: for(int i = 1; i <= n; i++) for(int j
351
0
0
【学习笔记】(29) 笛卡尔树
摘要:定义与性质 笛卡尔树是一种二叉树,每一个结点由一个键值二元组 (k,w) 构成。要求 k 满足二叉搜索树的性质,而 w 满足堆的性质。 ,也就是说,对于一个节点 i 的左儿子 li 和右儿子 ri,一定满足 li<i<ri(下标 \(k
80
0
0
【学习笔记】(28) 基环树
摘要:首先,严格地讲,基环树不是树,它是一张有 n 个节点、n 条边的图。 介绍 无向图上的基环树 有向图上的基环树 内向树 出度为 1 外向树 入度为 1 流程 找到唯一的环; 对环之外的部分按照若干棵树处理; 考虑与环一起计算。 找环 从任意一点开始搜索; 每次拓展到的点涂为灰色,回溯
127
0
0
【学习笔记】(27) 整体 DP
摘要:1.算法简介 整体 DP 就是用线段树合并维护 DP。 有一些问题,通常见于二维的DP,有一维记录当前x的信息,但是这一维过大无法开下,O(nm) 也无法通过。 但是如果发现,对于 x,在第二维的一些区间内,取值都是相同的,并且这样的区间是有限个,就可以批量处理。 所以我们就可以用线段树来维护 DP
126
0
0
【学习笔记】(26) cdq 分治 与 整体二分
摘要:cdq 分治 基本思想 我们要解决一系列问题,这些问题一般包含修改和查询操作,可以把这些问题排成一个序列,用一个区间[L,R]表示。 分。递归处理左边区间 [L,M] 和右边区间 [M+1,R] 的问题。 治。合并两个子问题,同时考虑到 [L,M] 内的修改对 \([M+1,
92
0
0
* 【学习笔记】(25) 可持久化数据结构
摘要:可持久化线段树(主席树) 主席树,一个数据结构,能访问到历史版本的数据,常用于可持久化和区间k大值,是线段树的一个升级版。 可持久化的意思是可以访问任意版本的数据,一眼想到的暴力做法就是开n个数组来记录,这显然是不可取的。 那么我们考虑优化。若只有单点修改,不难发现每两个版本的差别最多为1,那么我们
27
0
0
【学习笔记】(24) 虚树
摘要:虚树常常被使用在树形dp中,当一次询问仅仅涉及到整颗树中少量结点时,为每次询问都对整棵树进行dp在时间上是不可接受的。此时,我们建立一颗仅仅包含部分关键结点的虚树,将非关键点构成的链简化成边或是剪去,在虚树上进行dp。 虚树包含所有的询问点及它们之间的lca。显然虚树的叶子节点必然是询问点,因此对于
20
0
0
*【学习笔记】(21) Prufer 序列
摘要:## Prufer 序列 Prufer 序列可以将一个带标号 n 个节点的树用 [1,n] 中的 n2 个整数表示,即 n 个点的完全图的生成树与长度为 n2 值域为 [1,n] 的数列构成的双射。 Prufer 序列可以方便的解决一类树相关的计数问题,比如凯莱定理:$n
55
0
0
*【学习笔记】(3) 动态DP
摘要:动态 DP 简称 DDP(Dynamic Dynamic Programming),其本质是用 矩阵 维护带修改的动态规划问题。 # 1.算法介绍:树链剖分写法 ## 模板:[P4719 【模板】"动态 DP"&动态树分治](P4719) > 给定一棵 n 个点的树。i 号点的点权为 $a_
24
0
0
【学习笔记】(22) 点分治
摘要:点分治就是把分治搬到了树上,其核心思想仍然是分治:将问题经过处理后,转化为同类型的,规模更小的问题求解。 # 静态点分治 ## Ⅰ.[P3806 【模板】点分治1 ](https://www.luogu.com.cn/problem/P3806) 题意:给定一棵带权无根树,问是否有点对的距离为 $k
27
0
0
*【学习笔记】(10) 块状链表
摘要:# 块状链表(尚未完善) 对于线性表,可以 O(1) 的访问,但是插入和删除操作是 O(n) 对于链表,可以 O(1) 的进行插入和删除,但是是 O(n) 的访问。 于是本着分块的思想,有了块状链表 。 大概长这个样子。每个块的大小数量级在 O(n) , 块数的量级
88
0
0
*【学习笔记】(23) 常用距离算法详解
摘要:本文主要讲述这三种常见距离算法 :欧氏距离,曼哈顿距离,切比雪夫距离 。 ## 1.欧氏距离 **欧氏距离** 是最易于理解的一种距离算法。在数学的平面直角坐标系中,设点 A,B 的坐标分别为 A(x1,y1),B(x2,y2),求点 A,B 之间的距离,我们一般会使用如下公式:
115
0
0
*【学习笔记】(19) 启发式合并
摘要:# 启发式合并 启发式合并核心思想就一句话:把小集合的合并到大的里。 启发式合并思想可以放到很多数据结构里,链表、线段树、甚至平衡树都可以。 考虑时间复杂度,设总共有 n 个元素,由于每次集合的大小至少翻倍,所以至多会合并 logn 次,总的复杂度就是 O(nlogn) 的(结合线段树合
39
0
0
*【学习笔记】(20) 期望与概率
摘要:# 概率 ## 1.基本概念 ![](https://img2023.cnblogs.com/blog/2751294/202306/2751294-20230607142537450-1609687656.png) ![](https://img2023.cnblogs.com/blog/2751
49
0
1
*【学习笔记】(18) 长链剖分
摘要:# 长链剖分 ## 1.算法简介与性质 长链剖分本质上就是另外一种链剖分方式。 长链剖分与重链剖分有相通之处,后者是将 子树大小 最大的儿子作为重儿子,前者则是将 子树深度 最大的儿子作为重儿子。可见两者只是换了一个剖分形式。 长链剖分有如下性质: * 性质 1:每个节点所在长链末端为其子树内最深节
263
0
1
*【学习笔记】(14) 初等数论(一)
摘要:1.【最大公约数(GCD)和最小公倍数(LCM)】 【基本性质、定理】 gcd(a,b)=gcd(b,ab)(a>b) gcd(a,b)=gcd(b,a mod b) gcd(a,b) \(\larg
152
0
0
好用的bitset——暴力的好帮手
摘要:会持续更新的。 # bitset C++ 的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用 1 bit空间。 bitset的原理大概是将很多数压成一个,从而节省空间和时间, 一般来说bitset会让你的算法复杂度 /32 ## 构造 bi
208
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起