文章分类 -  算法蒟蒻 / 数学/数论/计数

摘要:【同余原理】 感谢 https://www.cnblogs.com/alex-wei/p/Number_Theory.html 基本知识 \(1.使得a|bx的最小x为 \frac {a} {gcd(a,b)},且所有这样的x为 \frac {a} {gcd(a,b)}\) \(特别的,如果 bx 阅读全文
posted @ 2026-04-16 13:04 White_ink 阅读(4) 评论(0) 推荐(0)
摘要:【线性基】 与异或和有关的问题:01Trie、异或线性基 板子 struct LB { // Linear Basis const int BASE = 63; vector<i64> d, p; int cnt, flag; LB() { d.resize(BASE + 1); p.resize( 阅读全文
posted @ 2026-02-08 22:28 White_ink 阅读(5) 评论(0) 推荐(0)
摘要:【高斯消元】 时间复杂度\(O(n^{3})\) 高斯消元解决加法方程组 每次选绝对值最大的系数交换上来,然后消元 主元:系数不为0 自由元:系数为0 自由元之间相互独立,互不影响 主元的值可能会由自由元确定 唯一解:主元系数都不为0,值也不为0 矛盾解、多解: 若主元系数为0时,值不为0->矛盾 阅读全文
posted @ 2026-02-08 16:08 White_ink 阅读(5) 评论(0) 推荐(0)
摘要:【线性代数】 【矩阵封装】 矩阵加法/乘法 //矩阵加乘封装:1-based //如不用取模:mod请用超大质数100000000000000003 const int MAX_SIZE=200; // 最大矩阵大小 struct Matrix{ int rows,cols; i64 M[MAX_S 阅读全文
posted @ 2025-10-09 09:36 White_ink 阅读(18) 评论(0) 推荐(0)
摘要:【计数题】 mod 998244353 Grid Counting https://codeforces.com/contest/2151/problem/D 题目大意 思路 注意到恰好一个:列放了就不能再放->每列最多一个 注意到第一行只能放最左边和最右边 (如果上一行没放)第二行必须靠里放两个. 阅读全文
posted @ 2025-09-25 13:20 White_ink 阅读(6) 评论(0) 推荐(0)
摘要:【容斥原理】 计算多个集合的并集大小 公式 + - + - + ...以此类推 若有A,B,C,D,E五个集合 则有并集个数 A+B+C+D+E -(AB+AC+AD+AE+BC+BD+BE+CD+CE+DE) +(ABC+ABD+ABE+BCD+BCE+CDE) -(ABCD+ABCE+BCDE) 阅读全文
posted @ 2025-07-23 00:31 White_ink 阅读(14) 评论(0) 推荐(0)
摘要:【解题】质数与因数 【注意点】 d(m):表示m的因数 可用于求复杂度:比O(logn)小 求因数可避免遍历整个n->优化点 因数表 \(O(nlogn)\),适合xe5的范围 void init(){ for(int i=1;i<=3e5;i++){ for(int j=1;j*i<=3e5;j+ 阅读全文
posted @ 2025-07-05 15:26 White_ink 阅读(21) 评论(0) 推荐(0)
摘要:【数列】 小红与天使猫猫酱 https://ac.nowcoder.com/acm/contest/112320/F 题目大意 思路 代码 const int N=3e5+10; i64 n; void solve(){ cin>>n; //预处理逆元 i64 inv81=qmi(81LL,mod- 阅读全文
posted @ 2025-06-30 13:20 White_ink 阅读(14) 评论(0) 推荐(0)
摘要:【模意义下的运算】 加法/乘法 直接%mod即可 减法 (x-y+mod)%mod 除法 用乘法逆元 qmi(x,mod-2,mod) 或用逆元表 https://www.cnblogs.com/whiteink/articles/18703913 幂次 (1)欧拉降幂 (2)费马小定理:前面取模都 阅读全文
posted @ 2025-05-31 13:13 White_ink 阅读(13) 评论(0) 推荐(0)
摘要:【贡献法】(数论) 一般结合计数原理/组合数学 中位数 https://ac.nowcoder.com/acm/contest/111309/F 知识点: (1)组合数递推打表 (2)降幂:费马小定理 注意在前面的取mod下取(mod-1),在最后的操作上取mod(费马小定理逆运算) const l 阅读全文
posted @ 2025-05-31 00:14 White_ink 阅读(30) 评论(0) 推荐(0)
摘要:【状态】(数论) 一般数字本身的范围很小->直接以数字本身作为状态 类线性dp去转移 Small Operations https://codeforces.com/contest/2114/problem/F 思路 一个是乘一个是除->尝试缩短为1个操作 ->x和y都除到1找最短路线 ->如何找最 阅读全文
posted @ 2025-05-29 22:05 White_ink 阅读(12) 评论(0) 推荐(0)
摘要:【博弈论】理论基础 概念 初始状态很重要!一般都是针对初始状态进行讨论 必胜态 必败态 巴什博弈(Bash Game) 就是取石子 模型 结论 若n%(m+1)!=0 先手赢 若n%(m+1)==0 后手赢 分析 (1)若n%(m+1)!=0 先手可以拿到剩下(m+1)整数倍的石子留给后手 后手无论 阅读全文
posted @ 2025-05-22 22:04 White_ink 阅读(62) 评论(0) 推荐(0)
摘要:【数论构造题】 构造+数论知识 Once In My Life https://codeforces.com/gym/105158/submit 类题常见思路 构造n*k=xxx的题目->将其转换为加法ans+x=n*k->求x 思路 考虑构造123456789d0000..0000的形式,此时低位 阅读全文
posted @ 2025-05-20 10:40 White_ink 阅读(16) 评论(0) 推荐(0)
摘要:【乘法逆元】 注意:除法不能先取模!!! 定义 使用方法 关于取模 加法/乘法:直接取模 减法:+mod再取模 除法:乘逆元再取模 使用逆元的条件 题目中一般mod都是质数 计算逆元 qmi(b,mod-2,mod) 使用逆元 (a/b)%mod=(a%mod)*(b的逆元)%mod 求解逆元 先判 阅读全文
posted @ 2025-02-08 11:30 White_ink 阅读(14) 评论(0) 推荐(0)
摘要:【组合数学】 一般是推公式 模版代码 #include <bits/stdc++.h> using namespace std; #define endl '\n' typedef long long ll; const int MOD = 1e9 + 7; // 定义模数 const int MA 阅读全文
posted @ 2025-02-06 11:41 White_ink 阅读(28) 评论(0) 推荐(0)
摘要:【博弈论】题目积累 代码都很简单 思路一般也很简单() 不要多想() 乘之 https://ac.nowcoder.com/acm/contest/100671/D 代码 /*【博弈论】 小龙防止小蛇乱来 所以要全选(x 正贡献一定会被小龙选 负贡献一定会被小蛇选 ->所有都要选 */ #inclu 阅读全文
posted @ 2025-01-25 21:47 White_ink 阅读(32) 评论(0) 推荐(0)
摘要:【快速幂】 运用 求a^k mod p 矩阵快速幂 计算斐波那契的第n项 将线性变换重复n次 思路 ->k的二进制表示里,哪几位是1 举例 【快速幂模版】 ll qmi(ll a,ll k,ll p){ ll res=1; while(k){ if(k&1) res=res*a%p; k>>=1;/ 阅读全文
posted @ 2025-01-21 00:15 White_ink 阅读(16) 评论(0) 推荐(0)
摘要:【欧拉函数】 运用 公式求欧拉函数 时间复杂度 O(sqrt(n)) //公式法求欧拉函数 #include<bits/stdc++.h> using namespace std; #define endl '\n' typedef long long ll; int n; ll a; signed 阅读全文
posted @ 2025-01-20 23:08 White_ink 阅读(18) 评论(0) 推荐(0)
摘要:【因数】(理论知识) 求约数:试除法 时间复杂度 O(sqrt(n)) 思路 约数是成对出现的->只枚举小的一个 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; int t; int a; vector<in 阅读全文
posted @ 2025-01-19 20:51 White_ink 阅读(41) 评论(0) 推荐(0)
摘要:【质数】 判定质数:试除法 时间复杂度 O(sqrt(n)) 思路 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; int t,a; bool is_prime(int n){ if(n<2) return 阅读全文
posted @ 2025-01-19 00:36 White_ink 阅读(67) 评论(0) 推荐(0)