摘要:
【前言】 本人学习了一定时间的算法,主要精力都花在数学类的算法上面 而数学类的算法中,本人的大部分精力也花费在了数论算法上 此类算法相对抽象,证明过程比较复杂 网络上的博客有写得非常好的,但也有写得不明所以的 因此,本人特此开一个新的专题,专门负责讲解一些比较基础的数学类算法 但本人知识面也有限,部 阅读全文
摘要:
博客园主页 博客园博客主页 洛谷主页 洛谷博客主页 github主页 Codeforces主页 牛客网主页 QQ:923489297 后面,本人会慢慢将洛谷博客的文章同步发表到博客园来 转载或引用本人文章请先与本人联系 阅读全文
摘要:
一、引言 欧式筛/欧拉筛法/线性筛法(Euler Sieve)是一种能够在 O(n) 时间复杂度内,处理 [1,n] 内质数的方法。 其相比埃氏筛/埃拉托斯特尼筛法(Eratosthenes Sieve)的 O(nloglogn) 时间复杂度,主要的优化在于欧式筛保证了 阅读全文
摘要:
本文作者为 JustinRochester。 目录地址 上一篇 下一篇 任意模数多项式乘法-多模数快速数论变换 中国剩余定理 考虑一组同余式 $\begin{cases} \begin{aligned} x&\equiv& a_1&\pmod {m_1}\ x&\equiv& a_2&\pmod { 阅读全文
摘要:
本文作者为 JustinRochester。 目录地址 上一篇 下一篇 任意模数多项式乘法 在部分题目中,我们的多项式运算结果并不是对多项式模数(如 998244353)取模,而是对一些指定的(甚至是非质数的模数)取模。 为了解决这个问题,我们引入任意模数的多项式乘法。 首先需要明确的是:任意模 阅读全文
摘要:
本文作者为 JustinRochester。 目录地址 上一篇 下一篇 快速傅里叶变换的倍增实现 傅里叶变换的顺序 我们观察 第五篇 中的算法流程,可以发现: 对于 FFT 的前半部分,我们一直在奇偶分列,然后递归求解;对于后半部分,我们一直在 O(n) 合并,然后向上返回。 对于这种分治后,子 阅读全文
摘要:
本文作者为 JustinRochester。 目录地址 上一篇 下一篇 快速傅里叶逆变换(IFFT) 引入 根据上一篇的内容,我们知道,FFT 可以将多项式转化为点值序列,通过点值序列的乘积来实现多项式的乘积。 而为了保证还原出的多项式就是我们需要求的多项式,我们需要保证 FFT 取点的数量高于多项 阅读全文
摘要:
本文作者为 JustinRochester。 目录地址 上一篇 下一篇 快速傅里叶变换(FFT)的分治实现 引入 根据 第一篇 的定义,当我们拥有两个度数分别不超过 n,m (两者同阶)的多项式 $\displaystyle F(x)=\sum_{i=0}^n f_ix^i, G(x)=\sum 阅读全文
摘要:
传送门 【大意】 给定一个 CNF 和一个有向图。有向图上的每一条边都写上了一个字母。 要求你从 s 到 t 走一条尽可能短的路,且将经过的字母写下来后,这个字符串能被 CNF 接受。 输出字符串的串长。 【分析】 在有向图上行走,并写下边上的字符,这个过程等价于一个 DFA: 将所有状态的 阅读全文
摘要:
起因是我队友问了我一个问题: 我后面看了一下那题,等价的题意是求一个 CFG 和 DFA 交集,能识别的最短串的长度。 虽然编译原理没学过,但是我在可计算理论上有学到过:有个结论是,CFG 和 DFA 的交集也是 CFG ;而 CFG 推导出的最短串可以用队列+贪心的方法求解。但并没有学过如何对于给 阅读全文