随笔分类 - 算法竞赛
摘要:模版 namespace Combinatory { #define COMBINATORY_AUTO_INIT // MOD must be a prime and bigger than MAXN static const int MOD = 1e9 + 7; static const int
阅读全文
摘要:\(i\) 的最小质因数 \(pm[i]\) 。 \(i\) 的最大的最小质因数的幂 \(pk[i]\) 。 判断 \(i\) 是不是质数的充要条件为 \(i>1 \; and \; pm[i]=i\) const int MAXN = 1e6 + 10; int p[MAXN], ptop; in
阅读全文
摘要:取石子游戏,每次移动可以取 $1,2,k$ 个石子,无法移动则输。 int k; int sg[1005]; int SG(int x) { if(sg[x] != -1) return sg[x]; int res = 0; if(x >= 1) res |= 1 << SG(x - 1); if
阅读全文
摘要:BSGS算法 求解 \(a^x\equiv b (\mod m)\) 其中 \(gcd(a,m)=1\) 。 随便取一个 \(x_1\) ,则可以把 \(x\) 通过 \(x=kx_1-x_2\) 替换,其中 \(x_2<x_1\) 。则 \(a^{kx_1-x_2}\equiv b (\mod m
阅读全文
摘要:#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<int, pii> pipii; ll LINF = 0x3F3F3F3F3F3F3
阅读全文
摘要:普通的FNTT,输入两个多项式A[]和B[],A[i]表示多项式A的x^i的系数。 然后直接Convoluton,默认是使用A[]存放输出的结果,B[]可以视情况回收。 ```cpp namespace FNTT { const int MOD = 998244353; const int G =
阅读全文
摘要:来源的claris的模板,应该按我的水平不能超过claris。 质数的0次方和,也就是质数个数。 已通过wolfram alpha验证。 int mod; inline ll add_mod(ll x, ll y) { return (x + y >= mod) ? (x + y - mod) :
阅读全文
摘要:这个是整数分解PollardRho算法。不是离散对数PollardRho算法,在竞赛里面离散对数一般使用BSGS算法解决,虽然消耗一些空间,但是复杂度稳定。 快速乘可以替换成其他正确形式的乘法。 MR可以适当去掉一些,例如只使用2,7,61。 每次调用PR返回其中一个非1的因子,所以在外面套一层ge
阅读全文
摘要:原理 目标:检测某个较大的正整数 \(n\) 是否为质数。 证明: 若 \(n \leq 2\) 则直接给出结果。否则,若 \(n\) 为偶数,也直接给出结果。 否则,假设 \(n\) 为奇质数,显然 \(n-1\) 为偶数,可以写成 $2^sd$ 的形式,其中 \(s\) 是正整数,而 \(d\)
阅读全文
摘要:哈希的错误概率 常见的大质数:1000000007,998244353,19260817 不常见的大质数:32582657, 37156667, 42643801, 43112609(梅森质数) 一般取模数为 1e9+7 或者998244353,BASE值选233或者311。 当n为1e6时,模数在
阅读全文
摘要:单点修改,区间求和 已验证: https://www.luogu.com.cn/problem/P3374 (单点修改,区间求和) rt[i]: i位置所属的块的序号 va[i]: i位置的值 lb[b]: 序号b的块的左边界的位置 rb[b]: 序号b的块的左边界的位置 sm[b]: 序号b的块的
阅读全文
摘要:简介 用一下google随手搜索的一张图。 首先要理解其中每个节点存储的都是一个连续区间的和。 实际上就是一棵线段树把每个节点的右子树直接剪除的结果。 Add操作的时候,从当前编号的叶子节点开始(不一定是长度为1的层,但一定是叶子),先修改当前节点,然后每次加上当前的层的长度(也就是lowbit)就
阅读全文
摘要:自然数的k次幂求和 \(\sum_{i=1}^{n}i=\frac{i(i+1)}{2}\) 除法取整 编程语言的除法取整默认是向0取整,对于非负整数来说,即向下取整。也就是说, \(\lfloor \frac{x}{y} \rfloor = x/y\) 。非负整数的向上取整需要加上分母-1的值,这
阅读全文
摘要:基础 标准头文件等前置模板 语法基础:函数、指针、引用、结构体、类、速通Python 算法基础:模拟、递归、回溯、递推、贪心、二分(整体二分)、三分 排序:选择排序、冒泡排序、插入排序、快速排序、归并排序、桶排序、基数排序、堆排序、希尔排序 高精度整数、位运算、时空复杂度分析 离散化、前缀和和差分、
阅读全文
摘要:多项式插值简介 这部分内容收录在这篇文章中:【数学】多项式插值。 原理 由这 \(n + 1\) 个点,可以构造对应的 \(n + 1\) 个多项式,其中第 \(i\) 的多项式的形式为: \[l_i(x) = \prod\limits_{j = 0, \; j \neq i}^{n} \frac{
阅读全文

浙公网安备 33010602011771号