自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 「动态规划::数位DP」相邻数位递推 / Luogu P2657|LeetCode 600(C++)

我们来介绍最基本的数位DP:相邻数位递推。

2025-06-12 01:43:55 803

原创 「动态规划::状压DP」网格图递推 / AcWing 292|327(C++)

如果我们有一张地图,要求是在符合某类条件的前提在地图上放置最优解,该怎么计算?

2025-05-29 21:09:04 977

原创 「动态规划::状压DP」旅行商问题(TSP|最短哈密尔顿回路) / AcWing 91 | LeetCode 847|943(C++)

TSP,也就是旅行商问题,是给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路的问题,而这个回路也称为最短哈密尔顿回路。

2025-05-28 02:03:35 935

原创 「动态规划::状压DP」双数组排列问题 / LeetCode 1879|2850(C++)

什么是状态压缩?就是将一系列状态压缩进一个二进制数中。

2025-05-22 01:04:40 674

原创 「动态规划::背包DP」多重背包 / 二进制优化|单调队列优化 / AcWing 4|5|6(C++)

多重背包是背包问题中较为复杂的一个问题,我们将依次介绍朴素算法、二进制优化、单调队列优化,来依次解决AcWing 4、5、6。

2025-05-21 02:14:13 1064

原创 「数学::博弈论」Nim游戏(尼姆游戏)/ Luogu P2197(C++)

泰山崩于前而色不变,麋鹿兴于左而目不瞬,然后可以制利害,可以待敌。

2025-05-14 15:09:05 619

原创 「动态规划::线性DP」股票问题合集 / LeetCode 121|122|123|188 (C++)

我们已经了解过了线性DP:更进一步,我们来解决非常经典的线性DP问题系列:买卖股票。

2025-05-07 21:19:54 995

原创 「队列」单调队列 / LeetCode 239(C++)

长江后浪推前浪,一代新人换旧人。我们来讲:单调队列。

2025-05-04 17:49:01 675

原创 「动态规划::背包DP」分组背包 / AcWing 9(C++)

分组背包是变形的完全背包,这次给物品加了一个分组属性,也就是说,这次是对物品组进行01背包。

2025-05-03 01:17:51 1032

原创 「动态规划::背包DP」完全背包 / AcWing 3(C++)

​01背包探讨的是选与不选的问题,而完全背包探讨的是在可无限重复选择物品的问题。

2025-05-03 00:49:51 557

原创 「动态规划::背包DP」01背包 / AcWing 2(C++)

背包DP是非常经典的动态规划问题,而01背包更是典中典问题。

2025-04-30 21:48:56 503

原创 「动态规划::线性DP」最长上升子序列(LIS)|编辑距离 / LeetCode 300|72(C++)

DP,即动态规划是解决最优化问题的一类算法,我们要通过将原始问题分解成规模更小的、相似的子问题,通过求解这些易求解的子问题来计算原始问题。线性DP是一类基本DP,我们来通过它感受DP算法的奥义。

2025-04-30 20:50:44 1231

原创 「数学::数论」分解质因子 / LeetCode 2521(C++)

由算数基本定理,我们知道任意一个大于1的自然数可以表示为一些质数的乘积,该怎么用算法描述呢?

2025-01-27 00:38:21 1186

原创 「STL::array」标准库容器:array(数组)介绍(C++)

array 是一种C++标准模板库STL中定义的一种序列容器,它提供了对数组的初步封装。

2024-11-07 16:23:40 717

原创 「图::连通」详解并查集并实现对应的功能 / 数据结构模版(C++)

并查集,故名思议,能合并、能查询的集合,在图的连通性问题和许多算法优化上着广泛的使用。

2024-10-19 17:59:32 594

原创 「数学::快速幂」矩阵快速幂运算|快速斐波那契数列 / LeetCode 509(C++)

快速幂不仅可以用于求数的幂,也可以求矩阵的幂,进而进行将一些递推算法优化成logn算法。

2024-10-19 17:14:01 846

原创 「堆」对顶堆 / LeetCode 295(C++)

对顶堆可以在元素动态变化时维护第k小/大的元素。

2024-10-13 02:52:24 609

原创 「字符串」Z函数(扩展KMP|exKMP)/ LeetCode 2223(C++)

Z函数是一种独到的匹配算法,虽然国内称之为扩展KMP,其实他更具有Manacher算法的特征。与KMP类似的是,它也是字符串自匹配问题。

2024-10-10 00:35:32 1194

原创 「数组」二分答案 / LeetCode 1870(C++)

区别于二分查找对数组下标进行二分,二分答案是对一个与数组无关的实数域进行二分,并将二分得到的值作用于数组判断可行性的过程。

2024-10-02 18:12:37 659

原创 「STL::queue」标准库适配器:priority_queue(优先队列)介绍|自定义比较运算(C++)

queue 是一种C++标准模板库STL中定义的一种序列容器,它允许你在运行时动态地进行堆操作。本文介绍了priority_queue的成员函数和自定义元素比较方法。

2024-10-01 20:14:12 1021

原创 「STL::queue」标准库适配器:queue(队列)介绍(C++)

queue 是一种C++标准模板库STL中定义的一种序列容器,它允许你在运行时动态地进行队列操作。本文介绍了queue的成员函数。

2024-09-26 16:24:33 1030

原创 「STL::stack」标准库适配器:stack(堆栈|栈)介绍(C++)

stack 是一种C++标准模板库STL中定义的一种序列容器,它允许你在运行时动态地进行栈操作。本文介绍了stack的成员函数。

2024-09-26 00:43:54 1047

原创 「数组」离散化 / Luogu B3694(C++)

在不关注元素的绝对性质时,使用离散化处理会使得我们关注的范围更加紧凑。

2024-09-24 16:24:52 883

原创 「数组」定长滑动窗口|不定长滑动窗口 / LeetCode 2461|2958(C++)

滑动窗口是一类经典的双指针问题,它会借用额外的存储结构来维护一段连续的子数组。

2024-09-21 17:52:59 1055

原创 「堆」实现优先队列(priority_queue)的功能 / 数据结构模版(C++)

优先队列,是一种堆结构,按元素的相对大小关系执行出队操作。本文实现了这种数据结构。

2024-09-16 17:36:08 1420

原创 「数组」十大排序:精讲与分析(C++)

截止目前,我们已经讲解并分析了十种最常见的排序算法,附对应文章链接和全体Code。

2024-09-15 18:27:07 556

原创 「数组」堆排序 / 大根堆优化(C++)

本文我们来讲选择排序与分治思想结合的产物:堆排序。我们希望只进行少量比较就能得出数组中的最小元素,该怎么做呢?堆这种结构给了我们一点启发。

2024-09-15 17:39:17 1949

原创 「数学::数论」埃氏筛|欧拉筛(埃拉托斯特尼筛法|线性筛法)/ LeetCode 204(C++)

埃氏筛和欧拉筛是两种几乎跑在线性时间的质数算法,他们在处理大量数据时的性能极其优异,我们尤其希望你理解了欧拉筛的两条原则,这有助于培养线性递推的能力。

2024-09-12 00:06:57 1477

原创 「数学::数论」质数试除法 / Luogu P5736(C++)

质数是指在大于1的自然数中只能被1和它自己整除的数。我们可以利用这一除法性质对质数进行判定。

2024-09-07 18:38:29 682

原创 「图::存储」链式邻接表|链式前向星(C++)

这一节我们来介绍两种以这三种基结构为基础实现的高级图存储结构:链式邻接表|链式前向星。

2024-09-05 20:10:19 1833

原创 「图::存储」邻接矩阵|边集数组|邻接表(C++)

图是一种高级数据结构:链表是一个节点由一条边指向下一个节点,二叉树是一个节点由两条边指向下两个节点,而图是由任意多个节点由任意多条边指向任意多个节点。对于这种复杂的结构,如何存储在计算机的程序语言中呢?

2024-09-05 00:38:13 1044

原创 「数组」计数排序|桶排序|基数排序(C++)

这三种排序都是非比较类排序,它们只关注元素的绝对特征,而忽视相对特征,同时,也被称为时间换空间类型算法,虽然适用范围较为狭窄,但是在适用范围内时间效率较高。

2024-09-03 23:14:22 1795 1

原创 「数组」二分查找模版|二段性分析|恢复二段性 / LeetCode 35|33|81(C++)

二分查找的本质就是利用数组的二段性进行快速的分析。

2024-08-30 22:31:47 1528

原创 力扣第71题:简化路径 放弃栈模拟,选择数据流√(C++)

震撼的C++输入输出流运用

2024-08-26 22:44:12 856

原创 「数组」逆序对 / LeetCode LCR 170(C++)

我们希望求解一个数组的全部逆序对,暴力做法似乎很直观,但是时间复杂度是O(n²)级别的。但是归并排序提供给我们一种手段,在nlogn时间内解决这个问题。

2024-08-24 22:04:56 758

原创 「数组」数组双指针算法合集:二路合并|逆向合并|快慢去重|对撞指针 / LeetCode 88|26|11(C++)

双指针是一种简单而又灵活的技巧和思想,单独使用可以轻松解决一些特定问题,和其他算法结合也能发挥多样的用处。

2024-08-22 20:59:24 1209

原创 「数组」希尔排序 / 区间增量优化(C++)

希尔排序又被称为缩小增量排序,是高级算法中唯一使用了O(1)常量空间的算法,它充分利用了插入排序的特点,以此实现的分治思想简单又不失魅力。

2024-08-21 22:58:14 1178

原创 「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)

究KMP之际,通next数组之变,成一家之言。

2024-08-20 14:09:39 1802 2

原创 「字符串」字符串哈希|RK匹配:前缀哈希|滚动哈希 / LeetCode 28(C++)

我们今天从最简单的暴力匹配算法BF讲起,谈谈字符串哈希思想,以及两种哈希:前缀哈希和滚动哈希

2024-08-18 23:27:07 1366

原创 「字符串」详解AC自动机并实现对应的功能 / 数据结构模版(C++)

AC自动机是能以线性时间复杂度对整个文本进行黑名单词汇统计的数据结构。本文详解并实现了这种结构。

2024-08-17 23:56:25 871

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除