算法模板总结
文章平均质量分 62
温柔了岁月.c
这个作者很懒,什么都没留下…
展开
-
线段树算法模版
2、build(u,l,r):在一段区间上初始化线段树,其中u表示根结点,l表示左边界,r表示右边界。3、query(u,l,r):查询某段区间的和,其中u表示根结点,l表示左边界,r表示右边界。1.pushup(u):用子节点信息来更新当前节点信息(把信息往上传递)4、modify(u,x,v):修改操作,在u结点中,x位置加上v。该算法,主要有四种基本函数。原创 2024-02-21 19:49:32 · 266 阅读 · 0 评论 -
Trie树(字典树)算法模版
Trie树又叫字典树或者说前缀树高效的存储和查找字符串集合的算法结构主要有2种操作,存储字符串,查询字符串。原创 2024-02-21 19:48:35 · 385 阅读 · 1 评论 -
树状数组算法模版
这里注意:C[x]的含义和lowbit()函数。最基本的操作主要是两种。原创 2024-02-19 23:43:59 · 291 阅读 · 0 评论 -
并查集算法模板
退到上一层 find(3) p[3] = 4 p[3] = 4 将p[3]返回 退到上一层 find(2) p[2] = 3 p[2]find(3) p[3] = 4 p[3] = find(4) find(4) p[4] = 4 将p[4]返回。= 4 将p[2]返回 退到上一层 find(1) p[1] = 2 p[1] = 4 将p[1]返回。至此,我们发现所有的1,2,3的父节点全部置为了4,实现路径压缩;在并查集算法中,有一个p[N]数组,用来存储该节点的节点的编号。原创 2024-02-18 23:37:00 · 535 阅读 · 0 评论 -
dfs和bfs算法模版
求最小值,一般采用bfs算法,而不是dfs算法。一种是枚举四个方向的位置,然后再dfs。dfs的话,其实可以看做是一个递归树。此模版题,我写了2种dfs的算法,利用栈或者标记数组进行回溯。一种是直接dfs四个方向。原创 2024-02-11 17:39:55 · 853 阅读 · 0 评论 -
高精度加减乘除算法模板
首先,我们要知道高精度算法是C++才用的,Java中是不需要高精度算法的。高精度加法: 两个大的数相加 (数的范围是 大约为10^6)一个大的数(vector存储),乘上一个小的数(int存储)高精度整数 除上低精度整数。这里用vector来做。原创 2024-01-27 20:43:32 · 249 阅读 · 0 评论 -
二分算法模版
二分主要分两类,一类是对实数进行二分,一类是对整数进行二分对整数二分又分成2种,一种是向上取整的二分模版,一种是向下取整的二分模版。原创 2024-01-25 22:59:52 · 686 阅读 · 0 评论 -
差分算法模板
b[l] + c,效果使得a数组中 a[l]及以后的数都加上了c(红色部分),但我们只要求l到r区间加上c, 因此还需要执行 b[r+1] - c,让a数组中a[r+1]及往后的区间再减去c(绿色部分),这样对于a[r] 以后区间的数相当于没有发生改变。i = 1时, 在[1, 1] 这个区间 加上a[i]—> b[1] = a[1] b[2] - = a[1]i = 2时候, b[2] += a[2] --> 也就相当于 b[2] = a[2] - a[1]然后我们就得到了二维差分数组中的差分数组。原创 2024-01-14 21:26:04 · 1561 阅读 · 1 评论 -
前缀和算法模板
S[i, j] = 第i行j列格子左上部分所有元素的和。a数组为原数组,s数组为前缀和数组。a数组为原数组,s数组为前缀和数组。原创 2024-01-14 18:38:06 · 389 阅读 · 0 评论