随笔分类 - 算法简介
摘要:种树 在长度为 的数列中选择至少 个数字,他们都有价值,使得没有相邻的数字被取到,且数字之和最大。 求这个最大的数字之和。 我们考虑一个反悔贪心,首先用一个链表来维护数列,然后,每次贪心的选择最大的数字,并标记左右不可用。 但是这个贪心显然是错的,我们再直接将这三个数字合并为一个,价
阅读全文
摘要:离散傅里叶变换(Discrete Fourier Transform,简称DFT)的思想是利用 将一个多项式转为点值表示法。
对于一个多项式 ,我们按照前文所云,将所有的 作为 代入。
于是我们得到了 个点,使用复数形式表示,成为一个数组 的。
这被称为 的傅里叶变换。
阅读全文
摘要:我们都知道经典的 求解 LIS 需要写一个很烦的二分,但是树状数组就不用啦。
观察动态规划转移方程:
注意到这就是一个二维偏序问题,所以树状数组轻松解决,对于我这种数据结构爱好者简直是福音。
阅读全文
摘要:
让深度大的一点不断向上跳,直到两点深度相等
如果两点深度相同但是并不相等,可以两点一起跳
在随机数据下表现优异,因为树会比较平衡,所以近似
通常会被卡成单次 ,其实不难构造,可以构造一个深度大的树(比如链)
阅读全文

摘要:
我们考虑找到一个 和 一个 使得上述式子成立,这个并不难
首先枚举 ,显然有 注意这里和广大打法不同
因为广大打法是枚举余数,这里枚举的是相反的
然后把右边式子的值哈希存下,枚举左边的
对于左边枚举求出的值看看哈希数组是否存在对应的右边的值,如果有,那么就是一个解
搞出一个最小的解好像也不是很难吧.....
阅读全文

摘要:
首先,什么是STL?
STL,全称 Standard Template Library,也就是标准模板库,
它是在惠普实验室开发出来的,它主要出现到C++中,
STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),
然后,STL需要调用一个头文件
阅读全文
