Gene_INNOCENT
Wait for the sunrise!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
有什么相见恨晚的算法答题套路?【力扣】
众所周知,算法题主要有两大难点,一是「实现」,即算法本身的难度;二是「思路」,即你能否想到使用这个算法来解决题目。并且对于有一定刷题基础的同学来说,力扣上大部分简单、中等题所涉及的算法都是非常常见的算法,即算法本身不存在难度,最大的难点在于「思路」,即如何想到适合本题的算法。而解决「思路」问题,除了大量刷题积累经验之外,还可以采用一定的「巧劲」,从时间复杂度这个角度入手筛选出合适的算法。而本文的主要目的就是向大家介绍这种「巧劲」是如何在具体解原创 2020-08-06 09:04:35 · 1972 阅读 · 1 评论 -
详解单调栈算法
栈属于基础数据结构之一,基础到仅用「后进先出」这四个字即可完整概括其核心特征。然而,基础并不代表着简单,「后进先出」的背后反而隐藏着多样的变化与极其广泛的应用。在本篇文章中,我们将针对在基础栈上稍加改动所形成的「单调栈」算法进行详解。该算法与「单调队列」组成了算法题中最常考察的线性数据结构,属于面试中必知必会的算法知识。原创 2021-03-17 00:19:45 · 7537 阅读 · 9 评论 -
算法萌新如何学好动态规划(一)
动态规划问题一直是大厂面试时最频繁出现的算法题,主要原因在于此类问题灵活度高,思维难度大,没有很明显的套路做法。也正是因为这个原因,我们打算出一个「动态规划」系列文章来尝试破解面试中所涉及的动态规划问题。而本文就是这个系列的第一篇文章,主要目的是说明动态规划是什么,动态规划问题应该如何思考?原创 2020-08-06 09:09:13 · 1844 阅读 · 0 评论 -
算法萌新如何学好动态规划(二)
本文是「动态规划」系列文章的第二篇,主要聚焦于常见线性 DP 模型的讲解。线性 DP 是所有 DP 模型中最为常见与基础的模型,也是面试中最频繁考察的动态规划模型,因此我们将其放在本系列的第二篇进行介绍。原创 2020-12-05 23:44:53 · 489 阅读 · 1 评论 -
算法萌新如何学好动态规划(三)
本文是「动态规划」系列文章的第三篇,作为「动态规划(二)- 线性 DP」的一个延伸,将主要聚焦于动态规划经典模型 —— 背包问题的讲解。背包问题属于线性 DP 模型,之所以单独拎出来讲,主要是因为该问题信息量大且十分重要,属于面试中常考且必会的知识,因此我们将其放在本系列的第三篇进行介绍。原创 2020-12-05 23:46:53 · 434 阅读 · 0 评论 -
详解单调队列算法
在上一篇文章中,我们介绍了「单调栈」这一最常考察的线性数据结构。而今天我们将继续沿着这个思路,介绍另一个与其 “齐名” 的线性数据结构,即「单调队列」。「单调队列」在「数据结构」题中的分布较为广泛,且常被当作优化「动态规划」的一种重要手段,因此该算法在面试中考察的频率较高,属于必知必会的知识点。原创 2021-03-17 00:25:43 · 7496 阅读 · 10 评论 -
二分算法系统梳理
力扣题库目前一共 1971 道题,而其中高达 110 道题均与「二分」有关,其普遍性与重要性不言自明。然而尽管它这么重要,但大多数同学依然没能很好地掌握,总是会在各种细节上跌跟头,因此我们需要对该算法进行系统地梳理。「二分」一共有三类常见应用,分别是「整数二分」、「实数二分」以及「二分答案」,接下来将分别介绍这三类应用的具体形式。原创 2021-03-17 00:27:44 · 371 阅读 · 1 评论 -
刷算法题必备的基础数论知识
在力扣刷题时,「数学」是大家绕不过去的内容。事实上,力扣题库中标签为「数学」的题共有 208 道,仅次于 243 道的「动态规划」。然而对比「动态规划」,力扣题库中「数学」所涉及到的知识则要少很多,因此本篇文章将针对题库中「数学」所涉及的基础必备知识进行讲解,希望对大家日后刷题有所帮助。原创 2020-12-05 23:50:01 · 940 阅读 · 0 评论 -
详解树状数组
树状数组,经典树形数据结构之一,代码很短,但其蕴含的算法思想却非常精妙。可以这么说,刷算法题却不懂树状数组,那绝对算是一大遗憾。树状数组,常用于高效处理「一个数组的更新以及前缀和的求取」。原创 2021-06-01 20:02:53 · 491 阅读 · 1 评论 -
组合计数基础
在算法竞赛中,数学主要分为「数论」与「组合计数」两大部分。相比「数论」,「组合计数」通常是作为一种计数思想与其他题型(例如「动态规划」)相结合,进行统一考察。在上一篇文章中,我们已针对「数论」进行了讲解,因此本文将介绍「组合计数」。原创 2021-03-17 00:15:56 · 462 阅读 · 0 评论 -
矩阵快速幂详解
设想这样一个场景,面试官给了你一道算法题,你很快确定这是一道递推问题,并给出了 O(n) 的解题方法,然而面试官却继续问:“还能继续优化吗?”这样类似的场景并不少见,因为算法不仅追求「正确」,还追求「效率」,而这也正是优化方法的意义。本文即将介绍的「矩阵快速幂」便是一种常见的优化递推的方法,能将 O(n) 的递推过程加速至 O(log(n)),使效率显著提升。原创 2021-06-01 19:59:51 · 1294 阅读 · 0 评论 -
划分数算法概述及习题
划分数涉及一些难以用组合公式直接求得的数的划分问题。比如将 n 个数划分成多个不大于 m 的划分方法,且不存在相同数。或者划分成若干奇数或偶数的问题。划分要求千变万化,主要识别点在于将划分数类比为盒子与球的问题,类比成多个球放到多个盒子中,且球和盒子都没有区别。这类问题与一般的划分问题都不同,需要二维 dp 求解,有时还需要处理前缀和进行计算。原创 2019-08-21 12:56:52 · 544 阅读 · 0 评论 -
整体二分算法完整总结
整体二分,即对所有的查询进行一个整体的二分答案,需要数据结构题满足以下性质。1. 询问的答案具有可二分性。2. 修改对判定答案的贡献相对独立,修改之间互不影响效果。3. 修改如果对判定答案有贡献,则贡献为一确定的与判定标准无关的值。4. 贡献满足交换律、结合律,具有可加性。5. 题目允许离线操作。原创 2019-10-28 16:59:36 · 1944 阅读 · 0 评论 -
树上启发式合并算法概述及习题
树上启发式合并作为树上问题三剑客之一(点分治、长链剖分),以其优雅的暴力而闻名于江湖之中。通常来说,如果一个问题可以被划分为一个个子树进行求解的问题,而且各个子儿子对答案的贡献容易添加与删除,就可以考虑使用树上启发式合并来求解。本文主要介绍树上启发式合并的一些习题,可以从习题中仔细感受该算法的一系列特点。原创 2019-10-28 09:15:50 · 1862 阅读 · 0 评论 -
网络流习题集合
网络流习题合集:1. 餐巾计划问题;2. 家园;3. 飞行员配对方案问题;4. 试题库问题;5. 太空飞行计划问题;6. 最小路径覆盖问题。原创 2019-10-30 18:34:52 · 1941 阅读 · 1 评论 -
数位DP算法概述及习题
通常来说,数位 dp 问题都是通过 dfs 解决的,因为 dfs 的做法更容易理解,也能一定地简化代码。对于 dfs 求解的数位 dp 问题,其中设置的状态为 f[pos][...],pos 表示最后 pos 位没有填,... 表示的是从 pos 位之前继承来的信息,然后 f[pos][...] 的数值表示仅考虑这 pos 位所对答案产生的贡献。这 ... 所表示的状态通常需要根据题意来进行定义,比较个性化,也是数位 dp 的核心难点。原创 2019-11-02 11:13:17 · 1748 阅读 · 0 评论 -
李超树算法完整总结
李超树主要用途:1. 维护一段区间的多条直线,维护区间 [L,R] 中的三条直线。2. 支持单点查询多条直线最大/小值。如查询 mid 处的多条直线的纵坐标最大值。3. 支持区间查询直线最大/小值。如查询区间 [L,R] 中各直线最值的最大值。原创 2019-08-02 11:58:16 · 3512 阅读 · 0 评论 -
动态树算法概述及习题
动态树主要用于解决操作中带有加边、删边、换根的一系列问题,即树结构发生变化的问题,理论上来说,树链剖分的问题都能用 LCT 进行解决。原创 2019-09-18 10:37:48 · 1544 阅读 · 0 评论 -
线性基算法完整总结
设数集 T 为一组数任意子集异或得到的集合,则 T 的线性基是 T 的一个子集 A={a_1, a_2, a_3, ..., a_n}。A 中元素互相 xor 所形成的异或集合,等价于原数集 T 的元素互相 xor 形成的异或集合。可以理解为将原数集进行了压缩。原创 2019-07-22 15:45:29 · 1789 阅读 · 0 评论 -
长链剖分算法完整总结
涉及深度的树形 DP,长链剖分可以将其复杂度从 O(n^2) 优化到 O(n),基本思想是采用了指针偏移直接从重 (长) 儿子处继承了大量信息。长链剖分优化树形 DP 可以解决的问题与点分治以及树上启发式合并具有一定的重复性。通常解决的题目只有一次询问,如果有多次询问,需要离线操作。原创 2019-08-17 16:52:57 · 1831 阅读 · 2 评论 -
高斯整数、高斯素数、费马平方和定理
本文主要对高斯整数、高斯素数、费马平方和定理进行介绍。原创 2019-07-18 16:07:46 · 5062 阅读 · 0 评论 -
后缀数组算法概述及习题
后缀数组的题目非常灵活多变,主要涉及字符串所有后缀的字典序比较以及最长公共前缀。本文主要介绍后缀数组的一些经典应用,虽然是经典应用,但是其思想应该属于后缀数组类问题的本质思想。原创 2019-10-24 21:12:21 · 470 阅读 · 0 评论 -
卡特兰数详解
卡特兰数常见应用问题:括号匹配问题、出栈次序问题、多边划分为三角形问题、二叉树计数问题原创 2019-09-08 21:32:02 · 617 阅读 · 0 评论 -
斯坦纳树算法概述及习题
斯坦纳树适用问题:一个图中,有若干个关键点,将这几个关键点连在一起的最小花费。直观的理解,就是带关键节点的最小生成树。当然不同的题会有不同的限制,比如关键节点必须是叶子节点,或者求一个斯坦纳森林(需要对斯坦纳树再进行一次状压)。原创 2019-08-13 21:28:53 · 2713 阅读 · 0 评论 -
AC自动机算法概述及习题
AC 自动机主要适用于多个模式串下的匹配问题,常嵌套 dp 进行考察或者利用其 fail 树的性质进行出题。但是这些问题都有一个相同的特点,就是一定会题目给出或者人为建出多个字符串进行匹配,此点可以用于辨别 AC 自动机问题。原创 2019-09-25 21:33:11 · 1593 阅读 · 0 评论 -
回文自动机算法+马拉车算法概述及习题【回文串系列问题】
Manacher 算法主要解决的是给出一个字符串,O(n) 复杂度下求出以字符串中任意一个节点为中心所能扩展的最大距离。原创 2019-10-06 23:49:17 · 1882 阅读 · 0 评论 -
莫队算法完整总结(普通莫队、带修莫队、树上莫队、回滚莫队)
普通莫队、带修改莫队、树上带修改莫队、回滚莫队原创 2019-09-05 20:58:58 · 3126 阅读 · 3 评论 -
全图中第K小路径/团问题(有向/无向)
最近频繁遇见图上的第 k 小问题,比如无向图的第 k 小团、有向图上的第 k 小路径,无向图上的第 k 小最短路问题。然后这类方法的解决方法都比较相近,主要思考方向是先将边或单点加入堆中,然后每次弹出一个最小值,再用最小值去更新到一个新的状态,并将新状态加入到堆中,一直到计算到 k 次为止。原创 2019-08-24 15:46:27 · 2289 阅读 · 0 评论 -
DP 转移方程 —— 单调队列优化 & 斜率优化 & 李超树优化
最近比赛遇到了一道李超树优化 DP 方程的题,比赛时推出了方程,但由于对斜率优化方程格式的不熟悉,误以为是斜率优化的问题,导致最终错失 AC,因此想要将这三种格式的方程列举在一起,便于后续查阅。原创 2020-07-23 10:33:27 · 1589 阅读 · 0 评论 -
拉格朗日乘子法总结(等式约束、不等式约束、非线性规划、KKT 条件)
本文主要对拉格朗日乘子法进行总结。原创 2020-08-31 00:27:50 · 10077 阅读 · 2 评论 -
掌握用 STL 中的 SET 动态维护 “各类型凸壳” / “凸包”
本文主要根据一些例题介绍:如何使用 STL 中的 SET 动态维护各类型凸壳/凸包。原创 2020-02-23 22:47:02 · 1729 阅读 · 1 评论 -
力扣题目算法分类【持续更新】
本文主要对一些力扣算法题进行分类总结。原创 2021-01-15 20:14:35 · 1534 阅读 · 0 评论 -
【带权并查集详解】以HDU 3038为例【How Many Answers Are Wrong】
并查集主要是维护不同元素之间传递关系的数据结构,如果不带权,那么维护的就是不同元素是否属于同一个集合,即连通关系。如果带权,那么除了维护连通性之外,还会维护同一个集合中各个元素之间的关系。原创 2019-03-18 12:40:10 · 595 阅读 · 5 评论 -
【Nowcoder - 5670 B Graph】2020 牛客暑期多校训练营(第五场)【最小异或生成树、Boruvka 思想】
给定一颗 n 个点的树,每条边的权重为 wi。可以任意删除一些边或者增加一些边,但是在删增过程中必须保证图连通并且任意一个环的异或和为 0。在此基础上,求最小生成树。原创 2020-08-07 10:42:42 · 454 阅读 · 0 评论 -
【博弈 —— SG函数详解+例题解析】
博弈游戏的本质是一个有向图游戏,每个状态(局面)是一个图中一个节点,每个节点可以通向其他多个状态,而每个节点又由 n 个子游戏组成。原创 2019-04-09 19:55:42 · 2708 阅读 · 2 评论 -
【带权并查集题目汇总】
本文为几道带权并查集例题解析:1. 食物链;2. 关押罪犯;3. Rochambeau;4. True Liars。原创 2019-03-22 11:19:10 · 1731 阅读 · 0 评论 -
【洛谷 P3384】树链剖分【详解树链剖分】
本文根据一道树链剖分模板题对该算法进行解析。原创 2019-03-15 15:48:56 · 2605 阅读 · 0 评论