摘要: 前置知识 在了解图论之前,还需要知道怎么存图。 vector 用 vector<int> G[MAXN] 来存图。$G_i$ 表示从 $i$ 出发,能够到达的点的数组。空间开销相较于链式前向星较大。也可以将 vector 替换为其他 STL 容器,如 list、unordered_set、deque 阅读全文
posted @ 2024-09-22 19:25 hisy_qwq 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 单调栈 单调栈的定义是:栈内元素一定是单调的。这个性质有助于排除更劣的选择,来优化时间和空间。 单调栈经典例题就是往后看看到的最高元素。如果一个元素要入栈,比前面的元素都要大,那么前面的元素一定看不到栈内元素而是那个最高的元素,就可以把末尾的元素弹出了。 例题 考虑 $dp_i$ 表示当前扫到第 $ 阅读全文
posted @ 2024-09-21 21:32 hisy_qwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要: kmp kmp 是模式串匹配的算法,本来最坏时间复杂度可以达到 $\operatorname{O}(n\times m)$,但是 kmp 可以将复杂度优化到 $\operatorname{O}(n+m)$。 kmp 有个很重要的东西,叫做 $nxt$ 失配数组。比如对于一个字符串 $s$,它的失配数 阅读全文
posted @ 2024-09-19 19:02 hisy_qwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 数论 同余 同余是指: $a\times b\equiv (a\bmod p)\times(b\bmod p)\pmod p$ $a+b\equiv (a\bmod p)+(b\bmod p)\pmod p$ $a-b\equiv (a\bmod p)-(b\bmod p)\pmod p$ 这个性质 阅读全文
posted @ 2024-09-19 17:19 hisy_qwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 同余定理 同余性质 同余性质是指在任意情况下,都有: $n\times m\bmod p$=$(n\bmod p)\times(m\bmod p)\bmod p$ $n+m\bmod p$=$(n\bmod p)+(m\bmod p)\bmod p$ $n-m\bmod p$=$(n\bmod p) 阅读全文
posted @ 2024-09-19 15:25 hisy_qwq 阅读(0) 评论(0) 推荐(0) 编辑
摘要: dfs 和 bfs dfs dfs,是英文名 deep-first-search 的缩写,它的思想是一搜到底,撞墙回头。这一种思想是基于递归和栈实现的,打个比方,你在迷宫里面,发现有岔路口,先向左走,走了一段时间发现是死路,退回去之后走右边。 基于 dfs,有一种术语叫做:回溯。回溯的思想是如果要走 阅读全文
posted @ 2024-09-19 15:24 hisy_qwq 阅读(2) 评论(0) 推荐(0) 编辑