基础算法
基础算法
kkopzc
这个作者很懒,什么都没留下…
展开
-
KMP算法
串的模式匹配算法在kmp算法中,主串的指针不需要再回退,模式串字符不等于主串时,指针j根据next数组回退至next[j]。原创 2024-03-02 20:47:45 · 300 阅读 · 0 评论 -
数组模拟链表(静态链表)
通过结构体new()出的链表当笔试数据过多时容易超时,故用数组模拟,实际上就是静态链表。原创 2024-03-01 11:31:48 · 205 阅读 · 1 评论 -
一维和二维前缀和
作用:快速求数组中[l,r]段和sum=s[r]-s[l-1];i从1开始相比于从0开始可以减少特判,且sum[1,r]=Sr。对于每个询问,输出原序列中从第 l个数到第 r个数的和。接下来再输入 m个询问,每个询问输入一对 l,r。输入一个长度为 n的整数序列。原创 2024-02-27 19:56:51 · 270 阅读 · 0 评论 -
一维和二维差分
前缀和的逆运算。原创 2024-02-28 09:51:59 · 896 阅读 · 0 评论 -
双指针算法
核心思想:将朴素的两层循环(O(n^2))优化到O(n)原创 2024-02-28 15:37:21 · 229 阅读 · 0 评论 -
快排,归并排序模板
注意:模板涉及很多边界问题,x, i,j及符号不能随意更改,牵一发而动全身。原创 2024-02-26 11:37:30 · 285 阅读 · 1 评论 -
区间合并
例如:[1,3][1,3] 和 [2,6][2,6] 可以合并为一个区间 [1,6][1,6]。注:由于第一步已经按左端点排序,故不存在更新start的情况。给定 n 个区间 [li,ri],要求合并所有有交集的区间。3)紫色:说明黑色已经更新完毕,需要开始更新紫色。将有交集的区间取并集合并,本质是贪心。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。1.按区间左端点排序。2)红色:更新end。原创 2024-02-29 20:39:19 · 139 阅读 · 0 评论 -
Trie树
Trie树中有个二维数组 son[N][26],表示当前结点的儿子,如果没有的话,可以等于++idx(idx相当于一个分配器,如果需要加入新的结点就用++idx分配出一个下标)。比如:son[1][0]=2表示结点1的一个值为a的子结点为结点2;如果son[1][0] = 0,则意味着没有值为a子结点。这里的son[N][26]相当于链表中的ne[N]。这个for循环就是在做这个操作,p可以理解为子树的根,u是这颗子树的孩子节点,idx给孩子节点分配新的空间,cnt作为计数和标记数组。原创 2024-03-02 18:50:13 · 486 阅读 · 0 评论 -
单调栈
每次输入x,若存在stk[top]>=x,则pop() (下次输入y时由于x原创 2024-03-01 20:30:19 · 189 阅读 · 1 评论 -
单调队列
q更像一个优先级队列,q[head]所指元素的输出优先级最高,只要这个元素还在窗口内,就一直输出,在这个过程中,他也许会因为窗口移动而被更新成另一个值(他还在窗口内),或者会一直保持最高优先级直至他出窗口,此时head++指向次优先级。有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。常用于滑动窗口,求窗口内最大值和最小值。给定一个大小为 n≤1e6 的数组。你只能在窗口中看到 k 个数字。每次滑动窗口向右移动一个位置。原创 2024-03-01 21:11:52 · 136 阅读 · 1 评论 -
整数离散化
接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。当然,这道题也可以直接用哈希表不用find函数,复杂度将由O(nlogn)直接优化为O(1)现在,我们首先进行 n 次操作,每次操作将某一位置 x上的数加 c。假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。1.a中可能存在重复元素,故需要。2.需算出a离散化后的值()根据某种关系映射到一段。原创 2024-02-29 18:58:23 · 148 阅读 · 0 评论 -
位运算问题
2.lowbit(x) 返回x的最右一位1及后面数 lowbirt(101000)=1000。通过x&-x实现(-x与x取反+1一致,可应用于统计x内1的个数。1.n的二进制数表示中第k位(从第0位开始):n>>k>>1。1)把第k位右移到第0位 n>>k。2)看个位是几 n&1。原创 2024-02-28 20:46:41 · 86 阅读 · 0 评论 -
高精度问题模板(大整数)
注:数据逆序存入数组方便解决进位问题。原创 2024-02-27 19:33:12 · 436 阅读 · 0 评论 -
二分模板
【代码】二分模板。原创 2024-02-26 19:17:38 · 128 阅读 · 0 评论