![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
以前的ACM
文章平均质量分 92
不想做科研的鸡米花
if Computer Version = (ctrl) C+V :
展开
-
【ACM数论】分治NTT
所以我们可以通过NTT将卷积的部分给计算出来,然后将相应的部分加上去便可以得到最后的答案。看到这个递推式,第一眼一定是暴力,但是我们会发现,暴力的时间复杂度为。那么这个时候,我们不妨考虑CDQ分治。,显而易见时间复杂度太高。原创 2024-08-17 21:57:45 · 972 阅读 · 1 评论 -
【ACM数论】贝尔数
因此我们将问题转化为了求出一组$a_i=B_n \space mod \space p_i\$题目链接:https://vjudge.csgrandeur.cn/problem/HDU-4767。我们发现中间那个矩阵可以利用矩阵快速幂求出,那么我们只需要预处理出前。的集合的划分成两两不想交的子集的划分方案数,记作。,那么利用CRT合并得到的结果,便是最后的答案!,然后根据乘法原理将其相乘,便是最后的结果。和一个元素组成一个子集,则需要从。和两个元素组成一个子集,则需要从。原创 2024-08-17 21:55:31 · 664 阅读 · 0 评论 -
【ACM数论】斯特林数
通过观察我们可以发现通项公式其实是一个卷积的形式,因此我们可以利用FFT在。由于分的每个集合是没有标号的,故可以写出每个集合的指数生成函数。同样地我们考虑单个环上的生成函数,对于长度为。可以将一个高次方数转化为第二类斯特林数。个集合,每个集合非空的方案数,读作。等式右边考虑为枚举非空盒子的数量。我们可以写出单个环的指数生成函数。那么可以利用多项式快速幂求出。不变时,利用多项式快速幂求出。通过观察我们还可以发现,在。斯特林数主要处理的是把。个集合或环的个数问题。原创 2024-08-17 21:54:00 · 614 阅读 · 0 评论 -
【ACM数论】从“快速傅里叶变换 FFT”到“快速数论变换 NTT”
FFT全称(Fast Fourier Transformation)快速傅里叶变换NTT全称(Fast Number Theoretical Transformation)快速数论变换如何计算多项式f(x)f(x)f(x)与g(x)g(x)g(x)的乘积?例如:计算f(x)=1+x2+x3f(x)=1+x^2+x^3f(x)=1+x2+x3与g(x)=1+x5+x6+x7g(x)=1+x^5+x^6+x^7g(x)=1+x5+x6+x7的乘积通常而言,我们思考暴力的算法:f(x)×g(x)=1×(1+x5原创 2024-08-17 21:49:10 · 757 阅读 · 0 评论 -
【ACM数论】拉格朗日插值法
相同题意的例题:https://codeforces.com/problemset/problem/622/F。上模板题:https://www.luogu.com.cn/problem/P4781。显然易见对于这三个点,是可以用多项式画出这三个点的,因此我们可以假设这个二次多项式为。这样一来,可以通过预处理后缀积、前缀积然后代入这个式子,所以这种情况时间复杂度为。思路:首先我们通过这个式子可以判断出这个式子最终一定是一个。对于这样一个方程组,我们可以用高斯消元解出系数。例题:求自然数的k次幂的和。原创 2024-08-17 21:43:37 · 943 阅读 · 0 评论 -
【ACM数论】莫比乌斯反演
题目连接:https://atcoder.jp/contests/agc038/tasks/agc038_c。题目连接:https://ac.nowcoder.com/acm/problem/14648。 像这样的过程就是反演,换言之,就是一个函数。对于此题分数取模,最好预先打表处理逆元,用一个。函数是积性函数的特性将莫比乌斯函数打表打出来。最后还需要注意一下,此题还有有一个取模的操作。 我们通过上面的模拟可以确定最终反演的。这样一来,这个问题感觉就变得套路化了! 除此之外,还有一个常见的。原创 2024-08-17 21:41:21 · 976 阅读 · 0 评论 -
【ACM数论】积性函数
OJ评测机稍微不好直接寄!因此直接上直接上欧拉筛筛积性函数,时间复杂度。那么我可以类似质因数分解的方式来求解积性函数,大问题转化为小问题。求正整数 n的所有正因数的个数,q次询问。数据很大,直接上唯一分解定理时间复杂度为。那么这个函数就是积性函数。的正因子的数量(排列组合)原创 2024-08-17 21:38:01 · 894 阅读 · 0 评论 -
【ACM数论】不定方程解的数量
相当于在原问题上加一个解,个隔板,问:有多少种放法? 此时,基本问题解决了。 那么问题等价于:用。原创 2024-08-17 21:36:44 · 479 阅读 · 0 评论 -
【ACM数论】容斥原理
容斥原理是一种计数的方法:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。 注:也可以将容斥定理描述为:要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的部分,再加回所有三个集合相交的部分,再减去所有四个集合相交的部分…依此类推,一直计算到所有集合相交的部分。(可以理解为就是先把所有单个集合全加一遍然后再去重)原创 2024-08-17 21:31:57 · 523 阅读 · 0 评论 -
【ACM数论】快速幂
根据上式发现,原问题被转化成了形式相同的子问题的乘积,并且我们可以在常数时间内从。,一旦我们计算的幂次方较大或者计算次数较多的时候就会花费很长的时间;,这样是最简单的计算方法,但是这种做法的时间复杂度是。对应的二进制下的数位为1的整系数幂乘起来即可。这样的计算式,你可能算一辈子都算不出来。于是可以利用二进制表示分割成更小的一部分。 通过二进制处理后时间复杂度降为。个二进制位,因此当我们知道了。 这个时候引入二进制对。原创 2024-08-17 21:27:58 · 668 阅读 · 0 评论 -
【ACM数论】线性同余方程
可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。注:由于是整数解,需要考虑是否能。原创 2024-08-17 21:27:05 · 944 阅读 · 0 评论 -
【ACM数论】裴蜀定理证明
裴蜀定理,又称贝祖定理(Bézout’s lemma)。是一个关于最大公约数的定理。这种递推式转换成矩阵的小技巧就是按照矩阵乘法来的,稍微观察便可以发现!闲来无事,不小心用矩阵巧妙证明了这个定理O(∩_∩)O哈哈~这**不就是斐蜀定理吗?是不全为零的整数,则存在整数。那么如何证明这个定理喃?)写成矩阵的形式,如下。原创 2024-08-17 21:23:22 · 761 阅读 · 0 评论 -
【ACM数论】欧几里得算法
欧几里得算法是用来求两个正整数最大公约数的算法。古希腊数学家欧几里得在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里得算法。(hexo 中 math渲染较慢,稍微等一下,如果还是没出来,就刷新((反证法)下面来证明。原创 2024-08-17 21:20:04 · 713 阅读 · 0 评论 -
【ACM数论】扩展欧几里得算法
扩展欧几里得算法(Extended Euclidean algorithm, EXGCD),常用于求ax+by=gcd(a,b) 的一组可行解。现在我们已经知道了,方程ax+by=gcd(a,b) 的一组可行解一定有一组可行解,那么如何求解它喃?,故x=1,y=0,再反过来带回去迭代便可以求出一组可行解。那么将x2,y2 不断代入递归求解直至gcd 为 0为止。(没加载出来一定要多刷新一下,这渲染太慢了)由于对应项系数对应相等。原创 2024-08-17 21:19:09 · 891 阅读 · 0 评论