
Acwing算法基础
文章平均质量分 93
Aurora_eye
这个作者很懒,什么都没留下…
展开
-
机试算法附加
来确定环的大小,并更新maxlen=max(maxlen,step[u]-step[i]+1);无非是输入一个 dist[t] 还是遍历输出 dist[t] 的区别。组合中{2,3}与{3,2}是一样的。若 a[i]=a[i-1]且used[i-1]=true / false;所以可能只适合用来统计信息,如果指望按顺序输出你插入的元素,没戏。从两个数一样且挨着(预先排序)时,如[0,1,1,2,5,6]。dist 是用于存储最短距离的,dist[0]=1;看过 图 中的一条边,构成矩阵g[N][N];原创 2025-05-19 11:52:28 · 891 阅读 · 0 评论 -
day11.数学知识
(虽然二者的时间复杂度看似都是o(sqrt(n)),前者一定会循环sqrt(n)次,但后者不一定sqrt(n)次。原创 2025-03-07 11:00:33 · 823 阅读 · 0 评论 -
day10.最小生成树+二分图
一般是从一个中求出一颗最小生成树,此时这颗树要满足的是所以边的权重相加是。原创 2025-02-12 22:00:24 · 655 阅读 · 0 评论 -
day09.最短路问题
最短路问题重点是如何将原问题抽象成最短路,如何定义点和边,难点是建图朴素版的djistra与边数无关,适合稠密图。原创 2025-02-11 18:40:53 · 618 阅读 · 0 评论 -
day08.搜索与图论--1(bfs+dfs+拓扑)
是给每一个结点都开一个单链表,每个单链表存的就是这个点可以走到哪些点。若一个图中有n个结点,则邻接表中就有。无论是深度优先遍历还是广度优先遍历,每个结点都只会遍历一遍,所以在实现时,会开一个。,g[a][b]存储的是a —> b的信息,若边有权重,则g[a][b]存的就是。代码中坐标用(x,y)表示,x为行,y为列。对图而言,无向图又可以表示为a—>b,b—>a均可达的有向图。,因为每个位置都有两种情况,总共有 n^2 个位置。子树节点数目①用于寻找最大res;若没有权重,g[a][b]存的就是一个。原创 2025-02-10 21:31:54 · 1653 阅读 · 0 评论 -
day07.数据结构--3(哈希表+stl库)
哈希前缀。关键在于公式。①初始化;②计算子串哈希值。原创 2025-02-09 14:58:30 · 447 阅读 · 0 评论 -
day06.数据结构--2(trie+并查集+堆)
字典树(insert / query),关键在于遍历字符串。并查集 (寻根 / 合并)堆。(映射—处理位置—size–,再up、down)up / down;涉及第k个插入的值时,无需建堆引入heap_swap;注意将第k个插入的值映射到堆中再操作。原创 2025-02-08 20:39:32 · 1920 阅读 · 0 评论 -
day05.数据结构--1(链表+栈+队列+kmp)
单链表,增删初始化。双链表无head,默认左端为0,右端为1。最左侧为r[0],最右侧为l[1],调用时注意。由于0和1已有含义,那么第一个插入的结点的序号为2,第k个插入的结点序号为k+1。单调栈求前一个or后一个更大值/更小值。单调队列求区间内最值。kmp注意for循环。原创 2025-02-08 13:28:12 · 2183 阅读 · 0 评论 -
day04.双指针+位运算+离散化+区间合并
双指针算法的核心是将O(n^2)的算法优化到O(n)。① 遍历② 更新3.题目(1)将一串英文字符按单词分隔开,单词间以空格分割。如:输出: abc dfg输出:abcdfg(2)799.最长连续不重复子序列二、位运算1.思想&&模板求n的第k位数字: n >> k & 1返回n的最后一位1:lowbit(n) = n & -n2.题目(801.二进制中1d个数)三、离散化若有一个数组范围很大,但元素很少,在保证相对位置不变的前提下,则可以将其下标映射到原创 2025-02-06 23:34:57 · 902 阅读 · 0 评论 -
day03.前缀和+差分
1.涉及区间边界。一维前缀:s[r] - s[l - 1];二维前缀:s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1];一维差分:diff[l] = diff[l] + c,;二维差分:S[x1, y1] += c, S[x2 + 1, y1] -= c, S[x1, y2 + 1] -= c, S[x2 + 1, y2 + 1] += c。原创 2025-01-10 02:21:35 · 933 阅读 · 0 评论 -
day02.高精度运算
本质是通过 式子 更新 t,由 t 知C,由 t 更新 t。加法:t = Ai+ Bi+ t;减法:t = Ai- Bi- t;乘法:t = Ai* b + t;除法:r = r * 10 + Ai;加法 与 乘法 注意处理最高位的进位减法 与 除法 注意处理前置0除法 注意翻转,且使用reverse需在#include < algorithm >下进行。原创 2025-01-09 18:18:52 · 875 阅读 · 0 评论 -
day01.快排+归并+二分
①快排 与 归并 的实现思想有相似之处,三步走。②整数二分与平常理解的二分查找(分三类)实现有差别,注意理解。整数二分的两种模板按需使用。③浮点数二分通过确定误差实现精度要求。原创 2025-01-08 18:59:17 · 691 阅读 · 0 评论