09 2024 档案
摘要:一组线性同余方程组 形如:\(\begin{array}{l} \left\{\begin{matrix} x \equiv a_1\ (\ mod\ m_1) \\ x \equiv a_2\ (\ mod\ m_2) \\ ...\\ ...\\ x \equiv a_n\ (\ mod\ m_
阅读全文
摘要:高精度 #include <bits/stdc++.h> #define gc() getchar() using namespace std; using i64 = long long; using ui64 = unsigned long long; using i128 = __int128
阅读全文
摘要:马拉车算法 struct Manacher { int n, huiwen_mx; string s, str; vector<int> d; Manacher(string &str_) { str = str_; n = str.size(); get_d(); get(); } inline
阅读全文
摘要:手写 \(HASH\) 可以是 \(ump\) 能够用 \(pair\)。 struct Hash { static uint64_t splitmix64(uint64_t x) { x += 0x9e3779b97f4a7c15; x = (x ^ x >> 30) * 0xbf58476d1c
阅读全文
摘要:组合数模版 一、组合数逆元求模 \((组合数不超过1e7且模数为质数且组合数不超过模数)\) struct C_fi{ inline i64 qp(i64 a, i64 b, i64 p = 1e9 + 7) { i64 res = 1; for (; b; b >>= 1LL, a = 1LL *
阅读全文
摘要:组合数 一、组合数逆元求模 \((组合数不超过1e7且模数为质数且组合数不超过模数)\) struct C_fi{ inline i64 qp(i64 a, i64 b, i64 p = 1e9 + 7) { i64 res = 1; for (; b; b >>= 1LL, a = 1LL * a
阅读全文
摘要:贝尔数 一、贝尔数 1、定义:以基数为 \(n\) 的集合的划分方法的数目,元素两两不同,集合 \(S\) 的一个划分是定义为 \(S\) 的两两不相交的非空子集的族,而它们的并则是 \(S\) 。 2、例如:\(n=3\) 时,有如下几个划分:\(\left \{\left \{a,b,c \ri
阅读全文
摘要:错位排列 一、错位排列: 1、定义:指没有任何元素出现在有序位置的排列,即对于长度为 \(n\) 的数组 \(a\),如果满足所有的 \(P_i \ne a_i\),则称 \(P\) 为数组 \(a\) 的错位排列。 2、利用容斥原理解决: 令集合 \(S_i\) 表示满足 \(P_i \ne a_
阅读全文
摘要:鸽巢原理 1、定义:对于 \(S\) 的一个覆盖 \(\left \{ A_1,A_2,...,A_k \right \}\) 有至少一个集合 \(A_i\) 满足 \(|A_i| >= \left \lceil \frac{|S|}{k} \right \rceil\) 。 2、其中 \(|S|\
阅读全文
摘要:一、卡特兰数 1、公式:\(K_{n}=C_{2n}^{n}-C_{2n}^{n-1}=\frac{C_{2n}^{n}}{n+1}=\frac{K_{n-1}(4n-2)}{n+1}(n\ge1)\),当 \(n==0\) 时,\(K_0=1\)。 2、特殊性质:卡特兰数是符合下面这个数列的一个公
阅读全文
摘要:组合与排列 一、插板法 1、用处:用于求一类相同元素分组的方案数,也可以用于求一类线性不定方程解的组数。 2、求正整数和的组合数目: 题目:有 \(n\) 个完全相同的元素,分为 \(k\) 组,保证每组至少有一个元素,求分配方案? 解法:我们可以考虑把 \(k-1\) 快板子插入到 \(n\) 哥
阅读全文
摘要:斯特林数 一、第二类斯特林数 1、定义:表示将 \(n\) 个两两不同的元素,划分为 \(k\) 个互不区分的非空子集的方案数。 2、递推式记为:\(S(n,m)=S(n-1,m-1)+mS(n-1,m)\),边界是:\(S(n,0)=[n=0]\)。 3、组合数的意义: 前一项表示将新的元素单独放
阅读全文
摘要:斐波那契 一、斐波那契数列: 1、公式为:\(F_0=0,F_1=1,F_n=F_{n-1}+F_{n-2}\),前几项为:\(0,1,1,2,3,5,8,13,21,34,55,89...\)。 2、求解斐波那契数列: 利用递推式求解,时间复杂度为 \(O(n)\)。 利用矩阵快速幂求解,时间复杂
阅读全文
摘要:一、用于计算第 \(k\) 个质数是多少 #include <cstdio> #include <cmath> #define int long long // 2147483647 -> 105097565位质数 // 1e9 + 7 -> 50847535位质数 const int maxn =
阅读全文
摘要:平衡树简洁版 1、用法: \(insert(x)\):向树中插入一个元素 \(x\),返回 \(std::pair<point\_iterator, bool>\)。 \(erase(x)\):从树中删除一个元素 \(/\) 迭代器 \(x\),返回一个 \(bool\) 表明是否删除成功。 \(o
阅读全文
摘要:矩阵快速幂 1、模版题:洛谷P3390。 template<typename T> struct mat{ static const int MAX = 105; T m[MAX][MAX]; mat() { memset(m, 0, sizeof m); } inline void init()
阅读全文
摘要:一、普通生成函数 1、定义:形如一个形式幂级数,如 \(F(x)=a_0·x^0+a_1·x^1+a_2·x^2+...+a_n·x^n+...=\sum_{i\ge 0}a_i·x^i\)。 2、普通生成函数的几种基本运算: 加法:\(f(x)+g(x)=\sum_{i\ge 0}(a_i+b_i
阅读全文

浙公网安备 33010602011771号