摘要: 来解决一下二进制卷积相关。以下均假设序列长度为 $2$ 的次幂。 我觉得以后我行内 $\LaTeX$ 应该加个空格。 快速沃尔什变换(Fast Walsh Transform,FWT) 这个是拿来在 $O(n\log n)$ 时间复杂度内处理位运算(与、或、异或)卷积的。 重申一遍卷积:两个序列 $ 阅读全文
posted @ 2022-09-03 19:53 gtm1514 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 线段树的一种变体。可以用来维护区间内一堆线段(就是一次函数)的取值问题(全局修改是一个$\log$的但是区间修改是两个$\log$的,因为线段树一个$\log$打标记一个$\log$)。 比如说板子。 题意:维护区间的一大堆线段的最大值。 李超线段树的大体思路是维护一个区间中点处的优势线段(感性理解 阅读全文
posted @ 2022-09-03 19:52 gtm1514 阅读(72) 评论(0) 推荐(1) 编辑
摘要: 针对目前的严重挂分现象我决定随手贺个拍的格式。 int main(){ system("./data"); system("./std"); system("./test"); if (system("diff std.out test.out -B -w -q"))printf("Wrong An 阅读全文
posted @ 2022-09-03 19:52 gtm1514 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 置顶:Delov大佬建议一定要封装多项式板子,不然日后会非常痛苦。 upd:换了多项式的板子。前面的不打算动了,毕竟不想把推导重修一遍。也作为一个常数较大但是较好理解的实现。跑的快的多项式板子在后半段。 对了如果直接找板子的话可以看挑战多项式的提交记录。没有封装。 多项式全家桶要来了。注意数组开4倍 阅读全文
posted @ 2022-09-03 19:52 gtm1514 阅读(129) 评论(0) 推荐(1) 编辑
摘要: 分治fft,是一种基于分治的、可以在$O(n\log^2n)$的复杂度内求解一类形如卷积形式的递推式的每一项的算法。具体的来举个例子。 【模板】分治fft 题意:给定数组$g$的前$n$项(从$1$开始),求$f$的前$n$项。其中$f$满足: $$f_i=\sum_{j=1}^if_{i-j}g_ 阅读全文
posted @ 2022-09-03 19:51 gtm1514 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 首先从多项式的概念说起。 多项式,就是形如$\sum_{i=0}^na_ix^i$的式子,$a_i$是系数,$x$是变量,$n$为多项式的阶/次数。 然后是重要的多项式卷积:定义多项式$f$和$g$的卷积$h$为: $$h_i=\sum_{j=0}^if_jg_{i-j}$$ 其实就是把两个多项式乘 阅读全文
posted @ 2022-09-03 19:50 gtm1514 阅读(472) 评论(0) 推荐(1) 编辑
摘要: 众所周知,我们有$n+1$个点值可以唯一确定一个$n$次的多项式。拉格朗日插值可以在$O(n^2)$的复杂度内求出这个多项式中任意一个$f(k)$的值。(当然你可以把$k$当成未知量$x$模拟多项式乘法和加法插出多项式的每个系数,复杂度$O(n^3)$) 我们有这样一个多项式: $$f_i(x)=\ 阅读全文
posted @ 2022-09-03 19:49 gtm1514 阅读(45) 评论(0) 推荐(0) 编辑
摘要: manacher,是一种线性时间复杂度求解回文字符串的算法。而且很短。 首先我们观察回文串,发现有长度为奇数的(以某个字符为对称中心)和长度为偶数的(以两个字符间的空位为对称中心)。为了方便我们把它们转化成一样的,我们在字符之间插入一个占位符#,这样所有回文串就变成了奇数长度。 然后观察转移的方式。 阅读全文
posted @ 2022-09-03 19:48 gtm1514 阅读(21) 评论(1) 推荐(0) 编辑
摘要: 凸包,即在平面上能包含给定所有点的最小凸多边形。它可以用最小的周长围住所有的点。 直接来到怎么求凸包。我们常用的有按照极角排序的Graham扫描法和按直角坐标排序的Andrew算法,两种算法的时间复杂度都是$O(n\log n)$,且瓶颈都在排序。其中,Andrew算法由于常数更小(不需要求极角)而 阅读全文
posted @ 2022-09-03 19:48 gtm1514 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 大概是大多数基础的部分,顺便附上长篇大论的结构体封装。 如果whk有不懂的建议先搞懂whk的几何部分。 感谢lin4xu老师的计算几何板子。快去给我关注( 图形的记录 点/向量:直接记录坐标。 线:直线记录直线上一点和方向向量。线段记录两个端点。曲线记录函数解析式。 多边形:按顺/逆时针记录每个顶点 阅读全文
posted @ 2022-09-03 19:47 gtm1514 阅读(59) 评论(0) 推荐(0) 编辑
摘要: upd on 11.20:好像不少锅,懒得修了。 一个神奇的筛法,复杂度是神奇而且常数贼小的$O(\frac {n^{\frac 34}}{\log n})$。当然是拿来求积性函数前缀和的东西。一般拿来解决$10^{10}$级别的前缀和处理。 首先对于我们$O(n^{\frac 23})$的杜教筛, 阅读全文
posted @ 2022-09-03 19:47 gtm1514 阅读(53) 评论(1) 推荐(0) 编辑
摘要: 就是$O(n)$求个最小表示法的东西。流程也很简单。首先我们把原串复制一倍接到末尾。然后(下标从$1$开始)点两个指针$i,j$指$1,2$,开始逐个字符暴力向后匹配,直到指向的字符不同。然后比较两个指向字符的大小,小的那个保留,大的那个往后跳。具体的看注释。 int main(){ scanf(" 阅读全文
posted @ 2022-09-03 19:46 gtm1514 阅读(20) 评论(0) 推荐(0) 编辑
摘要: wqs二分是巨佬王钦石在2012年论文中提出的一种二分方法。或者叫做带权二分。或者叫dp凸优化,一般用于$n$选$m$求最小权值一类的问题。这类问题一般有两个特点: 复杂度一般都是$O(nm)$及以上,不能接受。 如果把这个限制$m$的条件去了那就很水。 ~~其实主要是你觉得这个题能用那就能用(~~ 阅读全文
posted @ 2022-09-03 19:46 gtm1514 阅读(362) 评论(1) 推荐(1) 编辑
摘要: 启发式,就是发扬人类智慧来优化一些算法,比如启发式搜索和启发式合并。 启发式搜索就是根据人类直觉,给搜索设定一个估价函数,估价函数更符合条件的优先处理。举个例子,最短路里的估价函数就是最短距离。因为你手模的时候知道要先找最近的路而不是把所有的路都模拟一遍,把这个过程放到程序里实现就是启发式搜索。 然 阅读全文
posted @ 2022-09-03 19:46 gtm1514 阅读(154) 评论(0) 推荐(1) 编辑
摘要: 斯坦纳树问题是一种组合优化问题,大概就是正权无向图上连接$k$个指定点所需要的最小权值。这是洛谷的板子题。 一句话题意:$n$个点$m$条边带权无向图选$k$个点连接,求最小权值。$n\le100,m\le500,k\le10$。 首先我们最后连接出来的图一定是一棵树。然后看这个$k$的范围很难不想 阅读全文
posted @ 2022-09-03 19:34 gtm1514 阅读(52) 评论(0) 推荐(0) 编辑
摘要: upd on 2023.3.25:终于补完了。马上省选了还不会这个。 看到今天他们A层邀请赛整了一个于是决定多少看看。 来源:吉如一老师2016年国家集训队论文《区间最值操作与历史最值问题》。oiwiki上的论文没有粘全,最后的四类讨论只有一类(而且没有精髓$Segment\ Tree\ Beats 阅读全文
posted @ 2022-09-03 19:33 gtm1514 阅读(308) 评论(0) 推荐(2) 编辑
摘要: 由于某种程度上有点闲着没事干所以看了看硬币游戏这个题然后感觉应该学习一下概率生成函数于是就看了看几个题然后似乎发现了什么不得了的科技所以我觉得应该写篇博客总结一下(没错我就不加标点) 首先生成函数的定义不再赘述(其实是不想写) 对了前置知识:同济大学出版社 高等数学 上册 第二章 导数(实际上会求导 阅读全文
posted @ 2022-09-03 19:32 gtm1514 阅读(1317) 评论(1) 推荐(4) 编辑
摘要: 卡特兰数,一个特殊的数列。通项公式为: $$Cat_n=\frac {C_{2n}^n}{n+1}$$ 从$0$开始的前几项为:$1,1,2,5,14,42,132,\cdots$,所以有的题可以直接打个表看看(比如这个) 然后是它是怎么推出来的,最主要的就是从$(0,0)$到$(n,n)$不穿过直 阅读全文
posted @ 2022-09-03 19:31 gtm1514 阅读(115) 评论(0) 推荐(0) 编辑
摘要: prufer序列,一种把有标号树用唯一的整数序列表示。它可以将一个带标号\(n\)个结点的树用\(n-2\)个整数表示。 建立方法非常简单:每次找到无根树上编号最小的一个叶子,删掉它并记录它的父亲编号,重复\(n-2\)次,直到只剩下两个节点结束。 我们可以以线性的复杂度使一棵树在树和prufer序 阅读全文
posted @ 2022-09-03 19:31 gtm1514 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 线性基,可以拿来搞异或一类的东西。它可以表示出原数组互相异或能异或出的所有值。 一些性质: 1. 线性基的元素能相互异或得到原集合的元素的所有相互异或得到的值。 2. 线性基是满足性质 1 的最小的集合。 3. 线性基没有异或和为 0 的子集。 4. 线性基中每个元素的异或方案唯一,也就是说,线性基 阅读全文
posted @ 2022-09-03 19:30 gtm1514 阅读(39) 评论(0) 推荐(1) 编辑