算法
文章平均质量分 84
TheSoundOfWA
如果快乐是一种发明,它很容易被一再发明
展开
-
树形DP
树一大特点就具有子结构,而DP也是要求最优子结构,并且两者都有相同的基本操作——“递归”,那么可见这两者就可以非常和谐的结合在一起了。由于只需要从上向下递归更新子树的父结点,所以并不需要双向建边。树形DP,字面意思,在树结构上的DP,通常。(此状态根据题意有不同意义)时的最优解。我们暂且先讨论前者。原创 2023-10-08 23:24:27 · 79 阅读 · 0 评论 -
动态规划(DP)
将子问题的解记录下来,(记忆化搜索)原创 2023-07-26 14:43:35 · 239 阅读 · 0 评论 -
搜索优化-剪枝
众所周知,搜索的算法时间复杂度大多是指数级的。即使是简单的不加优化的搜索,其时间效率也低得让人无法忍受,难以满足我们竞赛时对程序的运行时间的要求。所以建立算法结构之后,有一种对程序进行优化的基本方法——剪枝。所谓剪枝,就是通过某种判断,避免不必要的的遍历过程,形象的过程。原创 2023-07-21 14:31:29 · 691 阅读 · 0 评论 -
二分
二分查找(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是用来在一个有序数组中查找某一元素的算法。原创 2023-07-18 11:50:33 · 86 阅读 · 0 评论 -
贪心算法
贪心算法,又名贪婪法,是寻找最优解问题的常用方法,这种方法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好/最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好/最优的解。{看着这个名字,贪心,贪婪这两字的内在含义最为关键。这就好像一个贪婪的人,他事事都想要眼前看到最好的那个,看不到长远的东西,也不为最终的结果和将来着想,贪图眼前局部的利益最大化,有点走一步看一步的感觉。原创 2023-07-14 13:53:47 · 84 阅读 · 0 评论 -
双指针之尺取法
又叫双指针法,所谓尺取法,是枚举区间的时候的一种优化思想。我们顾名思义地理解,就像是在一个数轴上,用尺慢慢地取。用比较学术的话来讲,就是取一对数组下标(即区间左右端点),根据题目要求和实际情况不断地推进左右区间得出答案。你可能会说,这不就是暴力枚举么?是的,不过它在处理区间的时候的效率要比一般的暴力枚举高很多很多。尺取法通常适用于选取区间有一定规律,或者说所选取的区间有一定的变化趋势的情况,比如单调性的区间就是经常用到尺取法的经典区间。原创 2023-07-13 16:28:59 · 69 阅读 · 0 评论 -
前缀和与差分
输入一个长度为。原创 2023-07-13 16:14:44 · 58 阅读 · 0 评论 -
倍增 LCA RMQ
兔子跳:很多时候,倍增思想的使用过程就像兔子跳跃的过程一样(设兔子单次跳跃的距离为ddd,假设在每次跳跃完成后,dd2d=d^2dd2) .学习这只兔子的跳跃过程,我们就可以尝试把极高的时间复杂度优化成Onlog2nOnlog2n对数据查询的优化:倍增很多时候是在查询过程中使用的(单次查询的时间复杂度通常为O1O(1)O1至Olog2nOlog2n.在查询速度优化的同时,往往也需要对数据的预处理.Onlog2n。原创 2023-06-13 07:23:29 · 57 阅读 · 0 评论 -
双指针
当遇到有序数组时,应该优先想到双指针来解决问题,因两个指针的同时遍历会减少空间复杂度和时间复杂度。原创 2023-05-28 10:45:48 · 78 阅读 · 0 评论 -
binary search(二分)
二分查找(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是用来在一个有序数组中查找某一元素的算法。原创 2023-05-27 19:27:08 · 587 阅读 · 1 评论 -
线性dp
种转移方法,因此一直沿着最左边往下走和一直沿着最右边往下走的路径就是数组元素之和,先处理这两个边界。最左边的部分和最右边的边界只会从是上一行的一个位置转移过来,只有。(上一行前一列),所以将状态优化为一维数组,从后往前倒推即可。结尾的最长上升序列后面,得到的长度为。的最长公共子序列长度,取二者的最大值,区间的最大连续子段和,则需要从所有。不是来自上一行,而是来自本行的更新。的最长公共子序列长度,或者把。区间的最大连续子段和,若求解。,求当前位置的最优解时,只需。列时经过的数字的最大和。原创 2023-05-26 19:50:40 · 95 阅读 · 1 评论 -
滑动窗口
滑动窗口,顾名思义,就是有一个大小可变的窗口,左右两端方向一致的向前滑动(右端固定,左端滑动;左端固定,右端滑动)。原创 2023-05-26 21:39:29 · 246 阅读 · 1 评论