摘要: 树状数组的题目一般有两种。哪两种?我们可以看看树状数组的定义。 我们树状数组有个数组 \(f\)。那么这个 \(f\) 有哪几种情况呢? 如果 \(f\) 的下标存的是原序列的下标,那么树状数组就是求原序列区间和/min/max/..... 如果 \(f\) 的下标存的是原序列的值,那么树状数组就是 阅读全文
posted @ 2025-05-10 14:53 I_AK_CTSC 阅读(24) 评论(0) 推荐(0)
摘要: LCA 之前在倍增的时候是提到过的。求 LCA 的办法有倍增求 LCA 以及树剖求 LCA。对于离线的求法还有 Tarjan。但是由于需要并查集,而且树剖的常数有很小,所以一般我们不用离线方法。忘了说了,在线求法还有两遍 access LCT 哦。 倍增法常数较大,树剖法常数极小。对于树上修改与查询 阅读全文
posted @ 2025-05-02 18:06 I_AK_CTSC 阅读(25) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2025-05-01 13:04 I_AK_CTSC 阅读(4) 评论(0) 推荐(0)
摘要: 今天来讲讲 tarjan。 tarjan 的实例包括但不限于缩点、割边、割点。 首先说说 tarjan 在干什么。我们记录一个 dfn 序,dfn 表示时间戳。然后维护一个 low 数组,low 的定义是从 \(x\) 出发所能到的最小的 dfn 的值,那么我们对于一个回到 dfn 更小的点时,我们 阅读全文
posted @ 2025-04-30 21:00 I_AK_CTSC 阅读(26) 评论(0) 推荐(0)
摘要: 题目链接:P3292 [SCOI2016] 幸运数字 做题记录 这道题是一道线性基合并的题目。 首先发现 LCA 可以倍增实现,而这道题又是集合最大异或和,一眼线性基。 参考并查集倍增,我们可以考虑线性倍增与合并。 我们假设维护一个倍增线性基 \(BASE[x][i]\) 表示从 \(x\) 开始, 阅读全文
posted @ 2025-04-29 17:39 I_AK_CTSC 阅读(32) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2025-04-13 20:54 I_AK_CTSC 阅读(20) 评论(0) 推荐(0)
摘要: 最短路有 DIJ,死掉的算法,BELLMAN_FORD,Floyd。但是我们这里只讲 DIJ 和 Floyd。 DIJ好题 P4779 【模板】单源最短路径(标准版) 真的有什么好说的吗? #include<bits/stdc++.h> #define pii pair<int,int> #defi 阅读全文
posted @ 2025-04-13 19:16 I_AK_CTSC 阅读(38) 评论(0) 推荐(0)
摘要: 题目链接 题目做法 我们发现,\(L\le x_i+x_j\) 也就等价于 \(\forall t\in \mathbb{N},x_i\ge t\vee x_j\ge L-t+1\)。\(R\) 同理,证明的话 ATCODER 官网写的很清晰了。 那么接下来怎么做呢? 发现 \(nm\le 10^6 阅读全文
posted @ 2025-04-09 21:29 I_AK_CTSC 阅读(22) 评论(0) 推荐(0)
摘要: 我们的标题叫做思想,这也就意味着这些题目并不是单纯的要求最小生成树。 我们知道,求最小生成树的方法有几个来?prim 和 kruskal 两种对吧。 我们来回顾一下 prim 和 kruskal 两种算法的本质。 我们知道,两种算法都是贪心,但是对于 kruskal 而言,他的本质更趋于集合合并,所 阅读全文
posted @ 2025-04-05 18:09 I_AK_CTSC 阅读(23) 评论(0) 推荐(0)
摘要: 拓扑排序是图论的经典了吧?拓扑排序的模板是很简单的。 众所周知,在一张 DAG 上,我们如果每一次选择一个入度为 0 的点并删除,那么我们是完全可以按照一定顺序跑完这一整张图。 那么这么一个简单的算法,能有什么花样呢? P3244 [HNOI2015] 落忆枫音 这是一道比较好玩的图论题。 首先我们 阅读全文
posted @ 2025-04-04 19:02 I_AK_CTSC 阅读(27) 评论(0) 推荐(0)