合集-学习笔记

摘要:Manacher是一个求出一个字符串中所有回文子串的利器。 记录方法 首先我们发现一个问题,一个长为 \(S\) 的字符串一共有 \(S^2\) 个子串,所以记录回文子串时不可能记录左右端点。如何解决呢?根据回文串的特点,我们发现,一个回文串,将它的两端各删去一个字符,那么它还是一个回文串。所以我们 阅读全文
posted @ 2024-05-04 19:48 Cyan_wind 阅读(32) 评论(0) 推荐(0)
摘要:李超线段树 学习笔记 问题引入: 在一个平面内,有 \(n\) 次操作,这些操作分为 \(2\) 种:第一种是在平面内加入一条线段;第二种是给定一个 \(k\) ,查询直线 \(x=k\) 与这些线段交点的最大值。(强制在线, \(n\le10^5,1\le x\le 39989,-10^9\le 阅读全文
posted @ 2024-07-05 21:27 Cyan_wind 阅读(45) 评论(0) 推荐(0)
摘要:闵可夫斯基和 定义两个凸包 \(A,B\) 的闵可夫斯基和 \(C=\{a+b\mid a\in A,b\in B\}\) 。就是从原点向其中一个凸包连出的向量,平移到另一个凸包上的每一个点,最后构成的图形即为两个凸包的闵可夫斯基和。其中的第一个图形可以看做被缩到了原点,\(C\) 中右下角(这里是 阅读全文
posted @ 2024-08-02 09:02 Cyan_wind 阅读(256) 评论(0) 推荐(0)
摘要:2-SAT 用于求解布尔方程组,其中每个方程最多含有两个变量,方程的形式为 \((a∨b)=1\) ,即式子 \(a\) 为真或式子 \(b\) 为真。求解的方法是根据逻辑关系式建图,然后求强联通子图,每一个强联通子图的答案都是一样的。 建图: 这里以模版题为例: 题意:给定若干个需要满足的条件,其 阅读全文
posted @ 2024-08-10 11:25 Cyan_wind 阅读(45) 评论(0) 推荐(0)
摘要:(之前学的一些东西都没打笔记,给忘的差不多了。从这个开始要记得写笔记了。) 注意事项:所有的字符串的下标从1开始。 KMP 对于一个字符串 s ,定义它的前缀数组a,其中a[i]表示子串s[1...i]前缀与后缀相同的最大长度(不包括串自身)。 对于朴素的算法,自然是n^2的暴力。考虑利用前面位置的 阅读全文
posted @ 2024-08-10 11:32 Cyan_wind 阅读(39) 评论(0) 推荐(0)
摘要:用于求解方程组。 给定 \(n\) 个关于 \(m\) 个变量的方程组,需要你判断该方程组是否无解、有无数解、有唯一解,并输出唯一的解。 考虑使用消元法。我们枚举一个变量 \(i\) ,从所有没有被操作过的方程式中选出一个,然后用它对其他没有被操作过的方程式进行消元,并将被选中的那个方程式视为被操作 阅读全文
posted @ 2024-08-12 21:26 Cyan_wind 阅读(57) 评论(0) 推荐(0)
摘要:我们知道,对于一个 \(k\) 次多项式,我们只需知道它在 \(k+1\) 个点上的取值,就能求出这个多项式。我们可以列方程求出每一个的系数,但是这样的时间复杂度是 \(n^3\) 的,所以我们使用一些别的方法来求出对于某个点的值。 拉格朗日插值: 设已知平面内的 \(n\) 个点,要求这 \(n\ 阅读全文
posted @ 2024-08-12 21:27 Cyan_wind 阅读(28) 评论(0) 推荐(0)
摘要:快速傅里叶变换(FFT) 学习笔记 简介: 卷积是形如 \(C_k=\sum_{i\oplus j==k} A_i*B_j\) 的式子,其中 \(\oplus\) 为表示某种运算。 而快速傅里叶变换(FFT)用于在 \(O(n\log n)\) 的时间复杂度内求加法卷积。 对于一个 \(k\) 次多 阅读全文
posted @ 2024-08-19 22:27 Cyan_wind 阅读(44) 评论(0) 推荐(0)