随笔分类 -  算法竞赛 / 算法竞赛 - 数学

摘要:最大公因数(GCD) 两个数的最大公因数很好做,使用内置的库函数即可,注意x和y的类型要相同。 ll gcd = __gcd (x, y); 如果要求多个数的最大公因数,那么初始化为0(因为根据定义,0和任何数x的gcd都是x,所以0是gcd操作的幺元),然后分别进行gcd即可。 ll gcd = 阅读全文
posted @ 2024-04-14 13:05 purinliang 阅读(267) 评论(0) 推荐(0) 编辑
摘要:父级页面:【数学】组合数学 卡特兰数 记号为 Hn 第n个卡特兰数,下面的n就是指这个。 H0=1,H1=1,H2=2,H3=5,H4=14,H5=42 卡特兰数最常见的场景是合法的括号序,还有栈进出的方案。他们的特点就是“右括号”、“出栈”的次数不能超过剩余 阅读全文
posted @ 2024-04-12 12:05 purinliang 阅读(83) 评论(0) 推荐(0) 编辑
摘要:父级页面:【数学】组合数学 排列 组合 可重排列 可重组合 隔板法 盒子可以为空 隔板法:x个相同的小球,有y个不同的盒子,每个盒子可以为空,求有多少种方案数?把y个不同的盒子视作y-1个不同的隔板,然后把小球视作不同的,全排列有 Ax+y1x+y1 种,然后除以隔板的全排列 阅读全文
posted @ 2024-04-12 12:03 purinliang 阅读(170) 评论(0) 推荐(0) 编辑
摘要:问题描述 给出 n+1 个二维平面上的点对 (x0,y0),(x1,y1),(x2,y2),,(xn,yn) ,求一个经过这些点的不超过 n 次的多项式 \(P(x) = p_{n} \cdot x^{n} + p_{n 阅读全文
posted @ 2024-04-10 20:57 purinliang 阅读(42) 评论(0) 推荐(0) 编辑
摘要:/* MOD must be a prime. if not, don't use inv() */ const int MOD = 1e9 + 7; struct ModularIntegers { #define mint ModularIntegers int num; mint() { nu 阅读全文
posted @ 2021-06-01 20:49 purinliang 阅读(94) 评论(0) 推荐(0) 编辑
摘要:简易的多项式。用来粗暴模拟。 struct Poly { static const int MAXN = 1e3 + 10; int deg, f[MAXN]; Poly() { deg = 0, memset(f, 0, sizeof(f)); } int& operator[](int inde 阅读全文
posted @ 2021-03-09 19:56 purinliang 阅读(90) 评论(0) 推荐(0) 编辑
摘要:TODO:可能需要一个更快速复制、合并的版本,下面这个常数非常大。 注意这里的z表示是否可以选取若干个非空的线性基组合出0。对于某些问题来说如果插入的数字中带有0的话,需要特殊处理。 下面版本的线性基的插入过程实际上是两步:检查新出现的元素和线性基中所有向量xor之后是不是为0,虽然检查到一半就已经 阅读全文
posted @ 2021-02-11 09:46 purinliang 阅读(190) 评论(0) 推荐(0) 编辑
摘要:快速Walsh变换 给两个长度为 n 的序列 a,b ,满足 n=2k ,序列标号为 a0,a1,,an1 , 求AND卷积: 序列 c ,满足 ci=(j&k)=iajbk阅读全文
posted @ 2021-02-05 18:59 purinliang 阅读(290) 评论(0) 推荐(0) 编辑
摘要:不打开O2的话效率不够高,但是这种程度上的优化确实应该留给编译器去做了,学个计算机假如连编译器能做的优化都要手动去做并且牺牲程序的简洁性,那还是早点改行去工地搬砖吧。 const int MAXLOGN = 20; const int MAXN = 1 << MAXLOGN; const int M 阅读全文
posted @ 2021-02-01 16:59 purinliang 阅读(84) 评论(0) 推荐(0) 编辑
摘要:把正整数n分成若干个正整数之和的方法数。 http://www.51nod.com/Challenge/Problem.html#problemId=1259 动态规划 答案是g[n] const int MAXF = 1e3 + 10; const int MAXG = 2e5 + 10; int 阅读全文
posted @ 2021-01-31 03:07 purinliang 阅读(140) 评论(0) 推荐(0) 编辑
摘要:斯特林子集数/第二类斯特林数 从把n个不同的小球放到k个相同的盒子里,且每个盒子至少要有一个小球的选法。 快速计算一行斯特林数: 使用这个式子 \({n \brace m} = \frac{1}{m!} \sum\limits_{i=0}^m (-1)^i \binom {m}{i} (m-i)^n 阅读全文
posted @ 2021-01-30 15:13 purinliang 阅读(226) 评论(0) 推荐(0) 编辑
摘要:多项式加减乘法 \[ h1(x)=\sum\limits_{i=0}^{n1-1}h_{1i}\cdot x^i; \forall i \ge n1, h1_{i} = 0.\\ h2(x)=\sum\limits_{i=0}^{n2-1}h_{2i}\cdot x^i; \forall i \ge 阅读全文
posted @ 2021-01-29 15:00 purinliang 阅读(468) 评论(0) 推荐(0) 编辑
摘要:序列 a=[a0,a1,a2,a3,a4,...] 的普通型生成函数,定义为形式幂级数: F(x)=i=0naixi 。 若序列 a 拥有通项公式,那么 ai 就等于通项公式。 再设 \(G(x)=\sum\limit 阅读全文
posted @ 2021-01-28 14:55 purinliang 阅读(216) 评论(0) 推荐(0) 编辑
摘要:质因数分解法求Mobius函数 const int MAXN = 1e6 + 10; int p[MAXN], ptop; int pm[MAXN], pk[MAXN], mu[MAXN]; void sieve(int n) { memset(pm, 0, sizeof(pm[0]) * (n + 阅读全文
posted @ 2021-01-28 02:31 purinliang 阅读(215) 评论(0) 推荐(0) 编辑
摘要:s1(n)=i=12n(n+1) s2(n)=i2=16n(n+1)(2n+1) s3(n)=i3=14n2(n+1)2 注意 \(\sum\limits_ 阅读全文
posted @ 2021-01-28 00:25 purinliang 阅读(663) 评论(0) 推荐(0) 编辑
摘要:struct InverseMatrix { static const int MOD = 1e9 + 7; static const int MAXN = 400 + 10; int n; int A[MAXN][MAXN]; int B[MAXN][MAXN]; void Init(int n) 阅读全文
posted @ 2021-01-26 23:48 purinliang 阅读(233) 评论(0) 推荐(0) 编辑
摘要:struct Matrix { static const int MOD = 1e9 + 7; static const int MAXK = 400 + 10; int k, A[MAXK][MAXK]; void Init(int k) { this->k = k; memset(A, 0, s 阅读全文
posted @ 2021-01-26 22:33 purinliang 阅读(110) 评论(0) 推荐(0) 编辑
摘要:Burnside引理 设 AB 为有限集合, X=BA 表示所有从 BA 的映射。 GA 上的置换群, X/G 表示 G 作用在 X 上产生的所有等价类的集合(若 X 中的两个映射经过 \(G 阅读全文
posted @ 2021-01-26 12:49 purinliang 阅读(564) 评论(0) 推荐(0) 编辑
摘要:验证链接:https://www.luogu.com.cn/problem/P5091 namespace exET { int calcA(char *a, int mod) { ll res = 0; for(int i = 1, n = strlen(a + 1); i <= n; ++i) 阅读全文
posted @ 2021-01-22 11:52 purinliang 阅读(351) 评论(0) 推荐(0) 编辑
摘要:SG函数 const int MAXN = 600000; int n; int sg[MAXN]; int SG(int x) { // 默认值为-1 if(sg[x] != -1) return sg[x]; bool used[32] = {}; // 这里写递归到后继状态 for(int i 阅读全文
posted @ 2021-01-17 22:56 purinliang 阅读(447) 评论(0) 推荐(0) 编辑

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