学习小记
inklutcuah
这个作者很懒,什么都没留下…
展开
-
【快速傅立叶变换fft&数论变换ntt学习小记】
概述fft(快速傅立叶变换)是用来解决多项式乘法的nlog(n)算法,它的主要思想是先把多项式的多项式表达法转化成若干个二维点对(x,y)(点值),把相同x的y乘起来(计算),最后利用这些点对计算出多项式的多项式表达法的系数(插值)。这中间使用了n次单位复数根的一些特殊性质,采用分治的思想快速地完成点值和插值。n次单位复数根要想理解fft,首先要知道n次单位复数根有哪些神奇的性质。定义n次单位复数根原创 2016-12-09 21:56:20 · 1006 阅读 · 0 评论 -
【伸展树splay学习小记】
本文以【bzoj】【1588】为例基本操作splay是基本操作,rotate是splay的基本操作。splay(now,root)把now splay到root的下面。单旋和双旋就不说了。我们可以简化操作,如果是一字型(方向相同)则先旋father,否则先旋now。然后再旋now。一字型 之字型 故可合并成void splay(int now,int root){ while(f原创 2016-06-30 08:27:56 · 634 阅读 · 0 评论 -
【后缀数组sa学习小记】
什么是后缀数组(sa)后缀数组就是将s的后缀按字典序排序,sa[i]表示字典序第i小的后缀从第几位开始。配合sa还有rank表示第i个后缀排第几,height表示第i小的后缀与第i-1小的后缀最长公共前缀是多少。怎么求后缀数组(sa)有两种方法可以求sa,但是最经济实惠(最简单)的是倍增法,这里我们只讨论倍增法。首先我们可以考虑倍增法,求出第i位开始二的次幂个字符的rank,显然可以利原创 2017-01-08 22:24:22 · 471 阅读 · 0 评论 -
【codeforces猎题记录】【题解口胡】【不定时更新】
说在前面以下题解均为口胡(粗略思考后并未实现),欢迎神犇指正。CF 792E有很多堆(n)球,一堆有很多个球(ai),求把球分成x或x+1个一份,最少分成多少份。题解:o(n sqrt(ai))当x小于sqrt(n)时直接枚举x,当x大于sqrt(n)时可以枚举分成多少块,计算出x,即和前面的情况一样。CF 786C序列上有n个有颜色的人,k为一组最多有多少个不同颜色的人,求对于每个k最少分成多少组原创 2017-04-06 15:39:50 · 382 阅读 · 0 评论 -
【动态树之link_cut_tree学习小记】
定义lct就是使用很多棵splay来维护树形结构及其链上信息的数据结构。操作access就是将一个点和根节点的路径用一棵splay联系在一起,没有其他多余的节点。我们的每一棵splay都是维护一条往上的树链,其中深度较小的在splay的左边。每一个splay最左端点都维护一个指针,指向原树中的父亲,这样access就是一些splay的合并。makeroot就是将一个点x变成树的根节点,先access原创 2017-05-13 20:46:18 · 249 阅读 · 0 评论 -
【后缀自动机sam学习小记】
定义顾名思义,后缀自动机就是可以识别原串所有后缀的自动机,最后回到达叶子状态,同时也可以识别所有连续子串。时间复杂度线性。由构造方法可知点数是线性的。构出sam后除了主链,即代表原串的链,其他的边要么就是构成了一个新的后缀,要么就是连接若干条构成了一个新的后缀的边,形成一个类似树的结构,所以边也是线性的。各种东西的意义很多性质都由定义得出,理解定义就可以发现很多性质。right一个字符串的right原创 2017-05-06 19:19:31 · 508 阅读 · 0 评论 -
【类欧几里得学习小记】
类欧几里得算法因为形式上像欧几里得算法而得名,其时间复杂度也和欧几里得算法一致,类欧几里得算法有很多应用,下面只举部分例子。目标求出以下三个函数值f(a,b,c,d)=∑ni=0⌊ai+bc⌋f(a,b,c,d)=\sum_{i=0}^n\lfloor{ai+b\over c}\rfloorg(a,b,c,d)=∑ni=0i⌊ai+bc⌋g(a,b,c,d)=\sum_{i=0}^ni\lfloor原创 2017-08-23 21:54:05 · 330 阅读 · 0 评论