集训
文章平均质量分 54
坐牢日记
ov0_
这个作者很懒,什么都没留下…
展开
-
基础数论问题
小时候最看不懂的一集。原创 2024-08-31 16:17:12 · 252 阅读 · 1 评论 -
二分图模板
二分图就是把一个图分成两块。原创 2024-08-31 16:16:53 · 281 阅读 · 0 评论 -
拓扑排序算法模板
需要记录每个点的出度或者入度,当出度或者入度为1时,才将这个点放到待拓展的队列中,这样保证顺序的先后性。原创 2024-08-31 16:16:27 · 150 阅读 · 0 评论 -
最近公共祖先(LCA)
在x和y的所有公共祖先中,深度最大的称为最近公共祖先LCA(x, y)原创 2024-08-31 16:16:05 · 220 阅读 · 0 评论 -
简单树上问题
先随便找一个点a,DFS一次找到最远距离的点u,再以u为起点DFS一次找到最远距离的点v,u到v即为树的直径。原创 2024-08-31 16:15:45 · 222 阅读 · 0 评论 -
博弈论简单算法
题目简述:有n颗石子,甲先取,乙后取,每次可拿1-m颗石子,轮流拿下去,拿到最后一颗的人获胜。先想当有m+1个石子时候不论先手取多少个 后手一定可以一次性取完,所以后手一定赢。那么再思考如果有n*(m+1)个,先手取k个,则后手取m+1-k个保证每一个周期结束后数目仍然是m+1的倍数。直到剩m+1个的时候,先手取完后,后手全部取完。如果不是m+1的倍数那么先手只需要一定数目的石子让其变为m+1的倍数即可 所以有当n%(m+1)==0先手必败n%(m+1)!= 0先手必胜。原创 2024-08-31 16:15:24 · 365 阅读 · 0 评论 -
启发式合并
启发式合并听起来挺高端,但好像只是一种基础的合并思想(?将小的集合中的数都加到大的集合中去,一般用一个map进行维护。原创 2024-08-31 16:15:01 · 147 阅读 · 0 评论 -
Manacher算法模板
Manacher算法用于计算最长回文串的长度,时间复杂度为需要先对字符串进行预处理,方便统一处理偶数和奇数字符串,具体为将abba变为$#a#b#b#a#&之后再通过一个分类讨论,主要是优化了已经计算过的子回文串长度的重复计算,具体的讨论以及推导还是看书吧,能看懂但讲不出来阿巴阿巴。原创 2024-08-31 16:14:41 · 176 阅读 · 0 评论 -
线段树模板
线段树的适用范围很广,可以在线维护修改以及查询区间上的最值,求和。对于线段树来说,每次更新以及查询的时间复杂度为O(logn)。原创 2024-02-13 18:20:03 · 258 阅读 · 0 评论 -
ST表模板
ST表适用于可重复贡献问题,即对于运算opt,满足x opt x = x,则对应的区间询问就是一个可重复贡献问题,例如max( x , x ) = x , gcd( x , x ) = xST表应用最广泛的领域便是解决RMQ问题:给定n个数,m个询问,对于每个询问,需要回答区间[ l , r ]中的最大值或最小值(可以采用两个数组同时进行处理)。基于倍增的思想,ST表可以实现O(nlogn)下进行预处理,并在O(1)时间内回答每个询问。如果仅仅进行区间最值查询,ST表的效率完全吊打线段树;原创 2024-01-29 12:50:49 · 197 阅读 · 0 评论 -
Trie字典树模板
可用于查询公共前缀,计算相同词汇频率,以及更多的高级应用。原创 2024-01-28 20:33:31 · 146 阅读 · 2 评论 -
Hash哈希模板
取一个特殊的进位,比如小写字符串就取26进制,将字符串中的每个字符都转化为唯一对应的一个数字,再像十进制那样计算该字符串的总和,就能得到一个字符串对应的唯一确定值首先不要把任意字符对应到数字0,比如假如把a对应到数字0,那么将不能只从Hash结果上区分ab和b(虽然可以额外判断字符串长度,但不把任意字符对应到数字0更加省事且没有任何副作用),一般而言,把a-z对应到数字1-26比较合适。进制的选择实际上非常自由,大于所有字符对应的数字的最大值,不要含有模数的质因子(那还模什么)原创 2024-01-28 14:09:34 · 372 阅读 · 1 评论 -
KMP算法模板
烤馍片算法主要应用场景为模式串(子串)在字符串(主串)中的定位问题,时间复杂度为O(n+m)可用于计算最长相同前后缀长度,找寻主串中是否存在子串。原创 2024-01-27 12:56:57 · 220 阅读 · 2 评论