
板子
DBWG
这个作者很懒,什么都没留下…
展开
-
cpp算法竞赛预备代码
freopen("/dev/null", "r", stdin);原创 2024-09-04 21:44:40 · 192 阅读 · 0 评论 -
Floyd 算法 求最短路
初始化:我们先把题目给的,两点直接相连的边的加入初始存在连接中。更新:然后每次只加入一个点对已有合法连接进行“拓展”更多的连接。结果:那么所有点加入后,即为整个图的连接状况。定义一个数组 f[ k ][ a ][ b ],表示只允许经过结点 1 到 k,结点 a 到结点 a 的最短路长度。f[ 0 ][ a ][ b ] 就是不经过任何点时,点 a 与点 b 之间的距离。题目给的所有两点的连接都存入。原创 2024-07-19 01:41:01 · 419 阅读 · 0 评论 -
板子合集2.0 md文本 可自助打印
链接:https://leetcode.cn/problems/kth-largest-element-in-an-array/solutions/2807885/cppku-han-shu-shu-zu-zhong-di-kxiao-yuan-1ne4/最糟情况的是每次都只比一次就成功,一直攒(只能一个一个攒),最后一次再遍历,所以最多比较次数就是OI Wiki说的 n-1 + n-2 == 2n-3。//左边对称相同,但不越界。n个位置,每个位置n次,每个比较长度是n,所以是O(n^3)的复杂度。原创 2024-07-13 15:54:03 · 464 阅读 · 1 评论 -
板子合集2.0
本板子是集成我的板子和OIWIKI。原创 2024-07-13 15:50:02 · 1000 阅读 · 0 评论 -
快速找到数组中第 k 大的元素
【代码】快速找到数组中第 k 大的元素。原创 2024-07-13 15:26:25 · 233 阅读 · 0 评论 -
快速幂板子 ;快速幂求逆元
返回值是对应参数的幂 (这里对p取余了)(一般也把a当参数)tmp就是a的c/2次幂。我们要返回c次幂,整数除法是向下取整的。(比如5次幂,5/2==2,那么需要额外乘一个使得为c次幂)( 1和 a^(p-1)在mod质数p下同余 )a1 = a2 ,那么我们直接a2。我们用分治思想是比一个一个乘快的。即比如我们求a的8次方 :a1。非递归写法:(二进制拆分)c == 1就是1次幂。原创 2024-06-11 17:02:36 · 674 阅读 · 0 评论 -
排列组合板子A(n,m)C(n,m) ; 递推组合数公式 ; 杨辉三角
我们拿出一个元素,剩下n-1个。要么在 n-1 里面选 m 个,要么这个加上 n-1 里面选 m-1 个。(前者其实就是n* n-1*…*n-m+1,分子分母都是m个数相乘)ksm快速幂求的是逆元。用的是费马小定理,适用于模数为素数的时候。组合数C(n,m),n个里面选m个,结果为。(板子中a是阶乘数组,预处理一下)上面这个递推结果正是杨辉三角。原创 2024-06-11 16:22:47 · 1319 阅读 · 0 评论 -
LCM — Least Common Multiple 最小公倍数
仅适用于两个数的时候!多个数一个一个求!原创 2024-06-07 20:54:45 · 482 阅读 · 0 评论 -
【线段树】框架
往往线段树题目会有自己的要求,比如分治——力扣399周赛。这个时候是需要根据题目去改线段树的。具体线段树原理可以看我的文章。原创 2024-05-30 09:00:28 · 216 阅读 · 0 评论 -
Euler 筛法(欧拉筛法)
筛选 n 以内的素数,存入vector<int>pri 中。(不用担心 i + 1 没被筛,i*2 >= i 的。埃氏筛法很好理解,素数的倍数都是合数,做标记不筛即可。# 埃氏筛是给 质数 乘以 每个 i,得出所有倍数。但是2和3都能筛到6,12,18,等,会重复标记。如果自己是这个质数的倍数,就结束,就避免了重复。因为大的数能乘到的,他的因数都能乘到。# 这里给 每个 i 乘以 质数。not_prime标记合数。原创 2024-05-14 11:39:03 · 348 阅读 · 0 评论 -
P5410 【模板】扩展 KMP/exKMP(Z 函数)
KMP与拓展KMP的区别:kmp构造使用nxt数组,exkmp使用z数组nxt数组存的是与模式串前缀相同的,每个下标前的前缀的后缀,的最大长度+1,且存到下一个位置,因为要接着比z数组存的是与模式串前缀相同的,模式串每个下标起始的后缀的前缀,的最大长度。原创 2024-05-14 10:41:13 · 387 阅读 · 0 评论 -
P6242 【模板】线段树 3(区间最值操作、区间历史最值)
简单地整理了下代码,比如函数递归时,l,r可以存入节点node结构体中。递归时,相同的aiml,aimr,val,直接用类成员变量即可,第一次调用时及时修改。但是线段树3还是有部分超时的,因为线段树3题目没有要求乘法,但是更新时频繁的算乘法标记和取余操作是很耗时间的。具体情况具体看待吧。因为最大值用了单独的懒标记t3,所以t3需要在区间乘的时候单独乘一下。(貌似在O(2)优化下这些修改并没有真正优化。以下代码已通过洛谷线段树2。原创 2024-05-01 18:32:15 · 346 阅读 · 0 评论 -
P3384 【模板】重链剖分/树链剖分
上了解下什么是树链剖分,(要先会线段树,链式前向星属于邻接表的升级版),然后去做洛谷的。2.(小错误)dfn序和rnk下标 两个在dfs2的时候弄反了。在理解上该点的深度似乎也可以,但是最后合并的时候会有问题。1. 向上跳链用来比较的深度是。原创 2024-04-01 11:23:46 · 341 阅读 · 0 评论 -
链式前向星板子
对于树,有的时候邻接表可能扩容上慢。而我们可以确定是n-1条边,所以我们可以用。a链的后继结点都可以通过next 来找到 (许多时候开的是。其实是这道NOI把我卡常了,直接学会链式前向星~~的链式的方式存到一起 ———— 链式前向星。数组,这里用结构体写一起了)。中,a链的首位于哪个位置。原创 2024-03-31 17:28:40 · 212 阅读 · 1 评论 -
匈牙利算法 KM算法 解释代码
【代码】匈牙利算法 KM算法 解释代码。原创 2024-03-21 11:55:49 · 141 阅读 · 0 评论 -
测速代码范例
代码框架原创 2024-03-17 20:59:33 · 421 阅读 · 0 评论 -
选择排序、冒泡排序、插入排序、合并排序、快速排序、堆排序排序板子
选择排序、冒泡排序、插入排序、合并排序、快速排序、堆排序原创 2024-03-09 16:43:01 · 628 阅读 · 1 评论 -
带压缩路径的并查集
带压缩路径的并查集。原创 2024-03-04 00:17:38 · 385 阅读 · 0 评论 -
板子合集1.0
26个算法板子原创 2024-03-03 19:39:25 · 1137 阅读 · 1 评论 -
快速选择 数组中的第K个最大元素
其实有库函数啦原创 2024-03-03 19:22:39 · 406 阅读 · 0 评论 -
分解质因数板子
【代码】分解质因数板子。原创 2024-02-28 01:07:52 · 409 阅读 · 0 评论 -
快读快写板子
祝福大家不被卡常TAT原创 2024-02-27 15:22:07 · 400 阅读 · 0 评论 -
排列组合板子A(n,m)C(n,m) ; 递推组合数公式 ; 杨辉三角
ksm快速幂求的是逆元。用的是费马小定理,适用于模数为素数的时候。a是阶乘数组,预处理一下。原创 2024-02-04 21:15:56 · 528 阅读 · 0 评论 -
高精度加法,乘法板子
【代码】高精度加法,乘法板子。原创 2024-02-04 12:58:12 · 522 阅读 · 0 评论 -
卢卡斯定理/Lucas定理板子 组合数板子
卢卡斯和组合数和费马小定理原创 2024-02-03 16:29:04 · 623 阅读 · 1 评论 -
二分图板子
KM算法原创 2024-02-02 23:03:45 · 622 阅读 · 0 评论 -
拓展欧几里得法求逆元
求乘法逆元,就是这个数在mod下的倒数原创 2024-02-02 20:20:20 · 444 阅读 · 0 评论 -
龟速乘板子 a*二进制拆分的正数b(mod p)
a*二进制拆分的正数b(mod p)原创 2024-02-02 19:07:52 · 626 阅读 · 0 评论 -
扫描线板子 小思路
从下往上扫的原创 2024-02-02 17:44:55 · 451 阅读 · 0 评论 -
P3375 【模板】KMP 前缀跳到后缀位置 ,前缀函数,前缀函数优化
比较策略都是原串 下标 i 从1 到 m ,一次只比一个位置,模式串位置 j 不合适时就一直往前跳原创 2024-01-28 18:31:01 · 491 阅读 · 0 评论 -
LCA倍增板子
最近公共祖先简称 LCA(Lowest Common Ancestor)原创 2024-01-28 17:16:43 · 458 阅读 · 1 评论 -
ST表板子 类似归并的有条理暴力 sparse-table
原理是“倍增”,直到两个长度为1的就可以合成一个长度为2的,两个2合成4,两个4合成8。最后使用时没必要追求“正好匹配”,可以在范围内取多点:比如看4~8长度为5(45678),我们取4,看4~7与5~8的最大值哪个更大即可。原创 2024-01-28 12:44:28 · 451 阅读 · 3 评论 -
manacher板子 记忆化求字符串每个位置的最长回文串的长度
原理是r记录当前最右的回文(l(左)与之对应),这样我们后来在r中偏右进行判断时,因为l r之间是回文,所以可以参照中偏左对应的位置,少判断许多次。原创 2024-01-28 11:52:50 · 474 阅读 · 0 评论 -
树状数组2板子 差分数组快速区间加 求某个数
实际上,这个是差分数组,差分的前缀和就是这个位置的数值,所以是用来求单个数的。如果想给一段区间加值,有没有更快的操作:add1。add可以给一个数加值。原创 2024-01-28 11:40:11 · 356 阅读 · 0 评论 -
树状数组1板子 可修改单个点的前缀和
对于lowbit的证明,注意正数的原码反码和补码是相同的。原创 2024-01-28 10:46:49 · 748 阅读 · 2 评论 -
线段树2板子 区间加与乘
乘法满足分配率原创 2024-01-28 10:19:00 · 511 阅读 · 0 评论 -
线段树1板子 区间加
类的构造函数写在类最后了,本板子没有将左右下标封装到节点中,而是实时计算的。原创 2024-01-28 00:56:05 · 770 阅读 · 3 评论 -
堆优化的dijkstra板子
③vectorarr代表通路,用set可以去重(有的题可能是多重图,即含平行边)。①tmpdis代表节点之间的距离,有的时候就是1,自己设置吧,dijkstr主函数中算距离用。2.cmp仿函数是用于堆排比较器的,(试过greater()是不行的。②dij代表此点到所有点的最短路,所以我放参数列表当输出型参数了,许多题可能要用到。然后这次周赛又考了,我没有板子QAQ,普通板子还超时了,所以补一篇。之前力扣周赛有一次,都没想到用这个,,后来自己写了。原创 2024-01-21 16:35:22 · 596 阅读 · 3 评论 -
gcd得最大公约数,辗转相除法理解
gcd(a,b) = gcd(b,a mod b)原创 2024-01-14 23:06:51 · 415 阅读 · 1 评论 -
快速幂板子
快速算 a 的 c 次幂原创 2024-01-14 22:28:30 · 893 阅读 · 1 评论