随笔分类 -  算法简介

摘要:首先我们要明确一个方向,就是 $\text{FFT}$ 的原理是单位根的几个性质: - 消去原理: $\omega_{tn}^{tk}=\omega_{n}^k$ - 对称原理:$\omega_{n}^{k}=-\omega_n^{k+\frac n 2}$ - $\omega_{n}^k=(\omega_n^1)^k$ - $\omega_n^i\not=\omega_n^j(i\not=j)$ 也就是说,只要满足以上条件,也就可以用类似的方法实现。 阅读全文
posted @ 2023-07-02 20:45 DengDuck 阅读(79) 评论(0) 推荐(0)
摘要:种树 在长度为 $n$ 的数列中选择至少 $k$ 个数字,他们都有价值,使得没有相邻的数字被取到,且数字之和最大。 求这个最大的数字之和。 我们考虑一个反悔贪心,首先用一个链表来维护数列,然后,每次贪心的选择最大的数字,并标记左右不可用。 但是这个贪心显然是错的,我们再直接将这三个数字合并为一个,价 阅读全文
posted @ 2023-05-09 14:11 DengDuck 阅读(54) 评论(0) 推荐(1)
摘要:例题一 $$ \sum_{i=1}^n \lfloor\frac n i\rfloor\ $$ 首先很容易想到直接求解,对于较大的数据,$O(n)$做法无法通过。 注意到函数$y=\lfloor\dfrac n x\rfloor$的图像如下: 不难发现,随着 $x$ 增大 ,$y$单调不增,这说明对 阅读全文
posted @ 2023-05-08 19:34 DengDuck 阅读(73) 评论(0) 推荐(0)
摘要:离散傅里叶变换(Discrete Fourier Transform,简称DFT)的思想是利用 $\omega_n^k$将一个多项式转为点值表示法。 对于一个多项式$A(x)=a_0+a_1x+a_2x^2+...+a_{n-1}x^{n-1}$,我们按照前文所云,将所有的 $\omega_n^k$作为 $x$ 代入。 于是我们得到了 $n-1$ 个点,使用复数形式表示,成为一个数组 $(y_0,y_1,y_2,...,y_{n-1})$的。 这被称为 $A(x)$ 的傅里叶变换。 阅读全文
posted @ 2023-04-29 13:21 DengDuck 阅读(197) 评论(0) 推荐(1)
摘要:我们都知道经典的 $O(n \log n)$ 求解 LIS 需要写一个很烦的二分,但是树状数组就不用啦。 观察动态规划转移方程: $$ f_i=\max_{a_j\leq a_i} f_j +1 $$ 注意到这就是一个二维偏序问题,所以树状数组轻松解决,对于我这种数据结构爱好者简直是福音。 阅读全文
posted @ 2023-04-29 09:53 DengDuck 阅读(181) 评论(0) 推荐(0)
摘要:这个算法的用途是,给出 $n$ 个点,第$i$个点为$(x_i,y_i)$,它可以找出一个 $n-1$ 次的多项式$f(x)$,以便求出$x$值为其他情况。 阅读全文
posted @ 2023-04-25 18:10 DengDuck 阅读(33) 评论(0) 推荐(0)
摘要:KMP是一个求解字符串匹配问题的算法。 这个东西的核心是一个$next$数组,$next_i$表示字符串第$0\sim i$项的相同的前缀和后缀的最大长度。 这里的前缀和后缀概念略有不同, 阅读全文
posted @ 2023-04-25 18:08 DengDuck 阅读(54) 评论(0) 推荐(0)
摘要:这是一个有助于分解组合数来求解的定理,适合模数小,数字大的问题。 有质数 $p$,对于$n,m$,如果$n=k_1p+b_1,m=k_2p+b_2$,有 $$ C_n^m\equiv C_{k_1}^{k_2}C_{b_1}^{b_2} \pmod p $$ 阅读全文
posted @ 2023-04-25 18:07 DengDuck 阅读(298) 评论(0) 推荐(0)
摘要:浅谈倍增法求解LCA让深度大的一点不断向上跳,直到两点深度相等 如果两点深度相同但是并不相等,可以两点一起跳 在随机数据下表现优异,因为树会比较平衡,所以近似$O(\log n)$ 通常会被卡成单次$O(n)$,其实不难构造,可以构造一个深度大的树(比如链) 阅读全文
posted @ 2022-06-09 21:05 DengDuck 阅读(550) 评论(0) 推荐(0)
摘要:浅谈BSGS和EXBSGS我们考虑找到一个 $k$ 和 一个 $r$ 使得上述式子成立,这个并不难 首先枚举 $r$ ,显然有 $r(1\leq r\leq m)$ 注意这里和广大打法不同 因为广大打法是枚举余数,这里枚举的是相反的 然后把右边式子的值哈希存下,枚举左边的 $k(1\leq k \leq m)$ 对于左边枚举求出的值看看哈希数组是否存在对应的右边的值,如果有,那么就是一个解 搞出一个最小的解好像也不是很难吧..... 阅读全文
posted @ 2022-05-28 12:40 DengDuck 阅读(435) 评论(0) 推荐(0)
摘要:【速通】传递闭包传递闭包其实就是求出 i 可不可以直接或间接到达 j 我们用 邻接矩阵 存储 用 弗洛伊德,如果 i 能到 k,且 k 能 到 j,则 i 可以到 j 求一遍,复杂度O( $n^3$ ) 阅读全文
posted @ 2021-10-22 21:28 DengDuck 阅读(164) 评论(1) 推荐(0)
摘要:【远古黑历史】List链表及其功能首先,什么是STL? STL,全称 Standard Template Library,也就是标准模板库, 它是在惠普实验室开发出来的,它主要出现到C++中, STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器), 然后,STL需要调用一个头文件 阅读全文
posted @ 2021-07-26 20:15 DengDuck 阅读(115) 评论(0) 推荐(0)