随笔分类 -  算法学习笔记与模板

摘要:目录多项式多项式基础数域的定义多项式的定义与基本性质多项式带余式除法形式幂级数的定义幂级数的导数和不定积分常见幂级数展开多项式插值多项式插值的定义多项式插值的方法拉格朗日插值法重心拉格朗日插值法加法卷积加法卷积的定义加法卷积的变换快速傅里叶变换(FFT)快速数论变换(NTT)任意模数NTT(MTT) 阅读全文
posted @ 2024-03-09 17:59 空白菌 阅读(345) 评论(0) 推荐(1) 编辑
摘要:目录原根阶阶的定义与基本性质原根原根的定义与基本性质原根判定性定理原根存在性定理原根的求法枚举法(最小原根)枚举法(所有原根)指标指标的定义与基本性质指标的求法BSGS算法扩展BSGS算法 原根 阶 阶的定义与基本性质 定义 设 aZ,mN 且 \(\gcd(a 阅读全文
posted @ 2024-02-19 12:58 空白菌 阅读(594) 评论(0) 推荐(0) 编辑
摘要:目录字符串哈希相关定义与基本性质常见的哈希方式多项式取模哈希线段树维护带修多项式取模哈希字符串哈希的相关应用字符串匹配允许 k 次失配的最长公共前缀允许 k 次失配的字符串匹配允许 k 次失配的最长回文子串最长公共子串 字符串哈希 相关定义与基本性质 字符串哈希的定义 字符串 阅读全文
posted @ 2023-09-09 14:45 空白菌 阅读(634) 评论(0) 推荐(0) 编辑
摘要:特殊计数数列 斐波那契数列 斐波那契数列的定义与基本性质 历史背景 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。 定义 斐波那契数列 Fn 有递推定义 $ 阅读全文
posted @ 2023-03-01 22:44 空白菌 阅读(320) 评论(0) 推荐(1) 编辑
摘要:目录排列与组合排列排列的定义与基本性质错位排列错位排列的定义与基本性质圆排列圆排列的定义与基本性质多重集排列多重集排列的定义与基本性质组合组合的定义与基本性质二项式定理范德蒙德卷积卢卡斯定理组合数的求法加法递推乘法递推公式法卢卡斯定理扩展卢卡斯定理枚举质因子重数多重集组合多重集组合的定义与基本性质计 阅读全文
posted @ 2023-02-28 18:27 空白菌 阅读(582) 评论(1) 推荐(1) 编辑
摘要:约定: 本笔记涉及的一切变量,若未特殊指明,则默认为非负整数。 计数原理 基本计数原理 加法原理(分类) 描述 若完成一件事有 n 种方式,第 i 种方式有 ai 种方法,那么完成这件事共有 i=1nai 种方法。 应用 从武汉到上海 阅读全文
posted @ 2023-02-28 18:26 空白菌 阅读(133) 评论(0) 推荐(1) 编辑
摘要:目录同余带余数除法带余数除法的定义与基本性质模运算加速算法模运算封装龟速乘快速幂同余的定义与基本性质同余类与剩余系的定义与基本性质欧拉函数欧拉函数的定义与基本性质欧拉函数的求法试除法线性筛求欧拉函数欧拉函数的其他性质同余重要定理费马小定理欧拉定理威尔逊定理二元一次不定方程二元一次不定方程的定义与基本 阅读全文
posted @ 2023-02-15 15:40 空白菌 阅读(501) 评论(0) 推荐(3) 编辑
摘要:目录整除整除的定义与基本性质素数素数的定义与基本性质素数定理伯特兰-切比雪夫定理素数判定试除法kn+i 法预处理法Miller-Rabin素性测试素数筛法埃氏筛欧拉筛(线性筛)反素数反素数的定义与基本性质枚举反素数正整数结构唯一分解定理(算术基本定理)勒让德定理分解质因数试除法Pollard 阅读全文
posted @ 2023-02-15 14:02 空白菌 阅读(391) 评论(0) 推荐(2) 编辑
摘要:线段树 ///线段树,建树O(nlogn)、修改查询O(logn),单点修改、区间查询 //需要魔改内部的,就把泛型删掉 template<class T, class F> class SegmentTree { const int n; vector<T> node; void update(i 阅读全文
posted @ 2022-11-27 15:49 空白菌 阅读(40) 评论(0) 推荐(0) 编辑
摘要:并查集 ///并查集(路径压缩),修改查询O(logn),用于维护集合关系 struct DSU { vector<int> fa; explicit DSU(int n):fa(n + 1) { for (int i = 1;i <= n;i++) fa[i] = i; } void init(i 阅读全文
posted @ 2022-11-27 15:19 空白菌 阅读(25) 评论(0) 推荐(0) 编辑
摘要:归并排序模板。 #include <bits/stdc++.h> using namespace std; long long cnt = 0; int a[1000007], b[1000007]; void merge_sort(int l, int r) { if (l == r) retur 阅读全文
posted @ 2022-05-13 01:51 空白菌 阅读(46) 评论(0) 推荐(0) 编辑
摘要:高精度模板,现在有__int128,能不用高精度就不用吧。 /** 整数高精度 */ ///继承vector解决位数限制(当前最大位数是9倍整型最大值),操作方便(注意size()返回无符号长整型,尽量不要直接把size放入表达式) struct Huge_Int :vector<long long 阅读全文
posted @ 2022-02-18 03:33 空白菌 阅读(114) 评论(0) 推荐(0) 编辑
摘要:快读快写模板,加速输入输出。 #include <iostream> using namespace std; template<class T> inline void read(T &val) { T x = 0, f = 1;char c = getchar(); while (c < '0' 阅读全文
posted @ 2022-02-17 19:32 空白菌 阅读(56) 评论(0) 推荐(0) 编辑
摘要:快速排序模板。 #include <iostream> using namespace std; int a[100000+7]; void quick_sort(int l,int r){ int i = l,j = r; int mid = a[(l+r)/2]; while(i<=j) { w 阅读全文
posted @ 2022-02-17 19:31 空白菌 阅读(60) 评论(0) 推荐(0) 编辑
摘要:算法简述 KMP是单模匹配算法,在一个长度为n的文本串中查找一个长度为m的模式串。它的时间复杂度是O(m+n),是这类算法的理论最优复杂度。 模式匹配:在长为n的字符串S中,找到某个长为m的模式串P,复杂度至少是O(m+n)。 朴素的模式匹配算法 普通的暴力方法是从S中逐个字符开始匹配P中每个字符。 阅读全文
posted @ 2022-01-21 23:32 空白菌 阅读(104) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示