摘要:
我也不知道为什么我求原根的板子都没打就来学ntt( 好吧其实知道原根是啥就行 阶 定义:若 $\gcd(a,n)=1$ ,则满足 $a^{x}\equiv 1 \pmod n$ 的最小正整数 $x$ 称为 $a$ 模 $n$ 的阶,记作 $\text{ord}_n(a)$ 。 性质: $a,a^2, 阅读全文
摘要:
来解决一下二进制卷积相关。以下均假设序列长度为 $2$ 的次幂。 我觉得以后我行内 $\LaTeX$ 应该加个空格。 快速沃尔什变换(Fast Walsh Transform,FWT) 这个是拿来在 $O(n\log n)$ 时间复杂度内处理位运算(与、或、异或)卷积的。 重申一遍卷积:两个序列 $ 阅读全文
摘要:
线段树的一种变体。可以用来维护区间内一堆线段(就是一次函数)的取值问题(全局修改是一个$\log$的但是区间修改是两个$\log$的,因为线段树一个$\log$打标记一个$\log$)。 比如说板子。 题意:维护区间的一大堆线段的最大值。 李超线段树的大体思路是维护一个区间中点处的优势线段(感性理解 阅读全文
摘要:
针对目前的严重挂分现象我决定随手贺个拍的格式。 int main(){ system("./data"); system("./std"); system("./test"); if (system("diff std.out test.out -B -w -q"))printf("Wrong An 阅读全文
摘要:
置顶:Delov大佬建议一定要封装多项式板子,不然日后会非常痛苦。 upd:换了多项式的板子。前面的不打算动了,毕竟不想把推导重修一遍。也作为一个常数较大但是较好理解的实现。跑的快的多项式板子在后半段。 对了如果直接找板子的话可以看挑战多项式的提交记录。没有封装。 多项式全家桶要来了。注意数组开4倍 阅读全文
摘要:
分治fft,是一种基于分治的、可以在$O(n\log^2n)$的复杂度内求解一类形如卷积形式的递推式的每一项的算法。具体的来举个例子。 【模板】分治fft 题意:给定数组$g$的前$n$项(从$1$开始),求$f$的前$n$项。其中$f$满足: $$f_i=\sum_{j=1}^if_{i-j}g_ 阅读全文
摘要:
首先从多项式的概念说起。 多项式,就是形如$\sum_{i=0}^na_ix^i$的式子,$a_i$是系数,$x$是变量,$n$为多项式的阶/次数。 然后是重要的多项式卷积:定义多项式$f$和$g$的卷积$h$为: $$h_i=\sum_{j=0}^if_jg_{i-j}$$ 其实就是把两个多项式乘 阅读全文
摘要:
众所周知,我们有$n+1$个点值可以唯一确定一个$n$次的多项式。拉格朗日插值可以在$O(n^2)$的复杂度内求出这个多项式中任意一个$f(k)$的值。(当然你可以把$k$当成未知量$x$模拟多项式乘法和加法插出多项式的每个系数,复杂度$O(n^3)$) 我们有这样一个多项式: $$f_i(x)=\ 阅读全文
摘要:
manacher,是一种线性时间复杂度求解回文字符串的算法。而且很短。 首先我们观察回文串,发现有长度为奇数的(以某个字符为对称中心)和长度为偶数的(以两个字符间的空位为对称中心)。为了方便我们把它们转化成一样的,我们在字符之间插入一个占位符#,这样所有回文串就变成了奇数长度。 然后观察转移的方式。 阅读全文
摘要:
凸包,即在平面上能包含给定所有点的最小凸多边形。它可以用最小的周长围住所有的点。 直接来到怎么求凸包。我们常用的有按照极角排序的Graham扫描法和按直角坐标排序的Andrew算法,两种算法的时间复杂度都是$O(n\log n)$,且瓶颈都在排序。其中,Andrew算法由于常数更小(不需要求极角)而 阅读全文