自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++基础总结

C++基础相关内容。一、基础概念相关以上便是零基础C++的大致总结。

2026-01-19 22:45:39 742

原创 C++ 图论算法:强连通分量

代码练习 3 最小强连通边数 对应蓝桥云课 代码见下。代码练习2 对应蓝桥云课 互可达点对数 代码见下。代码练习 1 对应蓝桥云课 课表判断 代码见下。强连通分量 对应蓝桥云课 代码框架见下。

2026-01-16 23:22:45 100

原创 C++ 图论算法:二分图最大匹配

图论算法:二分图最大匹配 对应蓝桥云课 代码框架见下。代码练习2 对应蓝桥云课 长方形的覆盖 代码见下。代码练习1 对应蓝桥云课 职位匹配 代码见下。

2026-01-13 22:42:37 79

原创 C++最近公共祖先(LCA树上倍增)

最近公共祖先的代码框架,对应蓝桥云课 LCA树上倍增 代码见下。代码练习 1 对应蓝桥云课 锵的距离查询 代码见下。代码练习2 对应蓝桥云课零食代购 代码见下。

2026-01-12 23:02:39 31

原创 C++ manacher(求解回文串问题)

代码练习2 小蓝的01串, 对应蓝桥云课 代码见下。代码练习 1 对应蓝桥云课 判定回文串 代码见下。代码练习3 反异或01串 对应蓝桥云课 代码见下。框架代码,对应蓝桥云课 最长回文子串 代码见下。

2026-01-08 21:04:29 190

原创 C++字符串hash

字符串hash,对应蓝桥云课 子串的比较 代码框架见下。代码练习 1 对应蓝桥云课 斤斤计较的小Z 代码见下。代码练习2 对应蓝桥云课 小蓝的开机密码 代码见下。代码练习3 对应蓝桥云课 小蓝的神秘日记 代码见下。

2026-01-04 23:00:59 217

原创 C++区间DP

区间DP代码框架见下 对应蓝桥云课 石子合并 代码见下。代码练习 1,对应蓝桥云课 小蓝吃苹果 代码见下。代码练习2 对应蓝桥云课 课上小游戏 代码见下。代码练习3 对应蓝桥云课 涂色 代码见下。

2025-12-28 16:59:51 272

原创 C++ 状压DP(01矩阵约束问题)

状压DP 01矩阵约束问题 代码框架见下 对应蓝桥云课 蓝桥云课。代码练习 3 对应洛谷 01矩阵 P1539 代码见下。代码练习 2 对应蓝桥云课 小明的宠物袋 代码见下。代码练习 1 对应蓝桥云课 威震华夏 代码见下。

2025-12-24 22:30:42 182

原创 C++状压DP

状压DP,对应蓝桥云课坐标搜索 代码框架见下。代码练习1 回路计数 对应蓝桥云课 代码见下。代码练习 2 星球 对应蓝桥云课 代码见下。代码练习 3 对应蓝桥云课 补给 代码见下。

2025-12-23 21:45:12 221

原创 C++数位DP

数位DP,对应蓝桥云课 二进制问题 代码框架见下。代码练习 1 长官和他的猫 蓝桥云课 代码见下。代码练习3 对应蓝桥云课 数数问题 代码见下。代码练习2 幸运年 对应蓝桥云课 代码见下。

2025-12-14 16:33:11 290

原创 C++树形DP(树上分组背包)

树形DP 代码框架见下 对应小明的背包6 蓝桥云课。代码 1 对应蓝桥云课 包含1的树上联通计数块2。代码练习 2 最小子树 代码见下,对应蓝桥云课。代码练习 3 对应蓝桥云课 取气球 代码见下。

2025-12-13 15:05:22 214

原创 C++树形DP(选与不选模型)

代码练习 2 树的着色问题 对应蓝桥云课 代码见下。代码练习 3 对应蓝桥云课 没有上司的舞会 代码见下。代码练习 1 对应蓝桥云课 生命之树。树形DP 代码框架见下。

2025-12-11 15:23:18 142

原创 C++ 小明的背包5

代码练习 1 基德的金币挑战 对应蓝桥云课 代码见下。代码练习 4 火柴棒数字 蓝桥云课 代码见下。代码练习 3 对应蓝桥云课 倒水 代码见下。小明的背包 5 动态规划数组 代码框架。

2025-12-10 11:56:31 232

原创 C++ 进阶动态规划(小明的背包3)

进阶动态规划,对应蓝桥云课小明的背包3 代码框架见下。代码练习 1 对应蓝桥云课 小明的背包4 代码见下。代码练习3 对应蓝桥云课 鲁邦的甜品店 代码见下。代码2 新一的宝藏搜寻加强版 对应蓝桥云课。

2025-12-08 23:20:46 196

原创 C++ 二维线性DP

代码练习1 对应蓝桥云课 云神的路径 代码见下。代码 2 对应蓝桥云课 激光样式 代码见下。二维线性DP 框架代码见下。

2025-12-06 23:10:01 237

原创 C++最长公共子序列

最长公共子序列 代码框架见下。

2025-12-06 20:10:11 101

原创 C++ 最长单调子序列

代码练习 1 对应蓝桥云课 蓝桥骑士 代码见下。代码练习 2 对应蓝桥云课 合唱队形 代码见下。代码 3 对应蓝桥云课 拍照 代码见下。最长单调子序列 代码框架 代码见下。

2025-12-01 20:17:57 198

原创 C++ 最大子段和(动态规划)

代码练习 4 对应蓝桥云课 可删除数组的最大子数组和 代码见下。代码练习1 对应蓝桥云课 区间最大子序列和 代码见下。代码练习 3 基德的冒险之旅 蓝桥云课 代码见下。最大子段和 对应洛谷P1115 代码见下。

2025-11-30 21:57:48 170

原创 C++ 字典树模版 条件判定

代码练习1 对应蓝桥云课 前缀判定 代码见下。代码练习2 对应蓝桥云课 依依的瓶中信。字典树模版 框架代码 见下。

2025-11-29 20:32:11 168

原创 C++ 线段树

C++线段树解决的问题是:优化动态区间求和的问题。降低查询和修改数组操作的时间复杂度,从O(n)降低到O(logn),线段树有三个类型 求和、求最小、求最大。代码练习 1 对应蓝桥云课 单点修改,区间查询 代码见下。代码练习 2,对应蓝桥云课 小蓝的鸡蛋 代码见下。

2025-11-29 12:13:06 844

原创 C++ 稀疏表

C++ 稀疏表的作用是解决静态区间的最值问题,每次询问的时间复杂度可以降到O(1)。代码练习 3 对应蓝桥云课 区间选数k 代码见下。代码练习1 对应蓝桥云课 区间最大值 代码见下。代码练习 2 对应蓝桥云课 附近最小 代码见下。稀疏表框架代码,见下。

2025-11-21 23:08:46 233

原创 C++ 树状数组、单点更新(区间求和)、区间更新(单点求值)

第一种方式:((x ^ x - 1) + 1) >> 1 (使用到异或,右移)C++ 树状数组的lowbit函数:求解lowbit有四种方式。代码练习 2 对应蓝桥云课 三元组个数 代码见下。代码练习 1 逆序对的数量 蓝桥云课 代码见下。C++ 单点更新,区间求和,代码框架见下。C++ 区间更新,单点求值,代码框架见下。第二种方式:x - (x & x-1)第三种方式:x & (~x + 1)C++ 树状数组的求和操作。第四种方式:x & -x。

2025-11-19 23:07:43 227

原创 C++ 离散化

代码练习 1 对应蓝桥云课 寻找满足高度的最大山峦美丽值 代码见下。C++ 离散化 代码框架见下。

2025-11-12 22:35:48 272

原创 C++并查集

C++ 并查集 Kruskal 代码框架见下。C++ 并查集:启发式合并,代码框架见下。C++ 并查集:路径压缩 代码框架见下。并查集:朴素算法 代码框架见下。并查集:森林算法 代码框架见下。

2025-11-07 20:28:50 166

原创 C++ 二叉堆

二叉堆元素插入:1,往数组尾部插入一个元素。2,对插入的元素,比较他在树形结构中,和他的父节点的大小关系,来决定是否和父节点进行交换。二叉堆删除元素:1,把数组的第0个元素和最后一个元素交换。2,删除数组的最后一个元素。3,对堆顶元素做下沉操作直到再次满足堆的性质。二叉堆获取堆顶元素:返回数组的第0个元素,时间复杂度为o(1)代码练习 3 对应蓝桥云课 一道简单的取模问题 代码见下。代码练习 1 对应蓝桥云课 小蓝的最大集合 代码见下。代码 2 对应蓝桥云课 第k大的数,代码见下。二叉堆是一个完全二叉树。

2025-11-04 23:16:38 195

原创 C++ 单调队列

单调队列:先进先出,是一个双端队列,队首只能删除元素,队尾可以进行插入和删除。代码练习2 对应蓝桥云课 MAX最值差 代码见下。代码练习1 对应洛谷 滑动窗口 代码见下。

2025-10-30 22:22:27 199

原创 C++ 单调栈

代码练习 1,伦太郎的等待,对应蓝桥云课 代码见下。代码练习2 对应蓝桥云课 百亿富翁 代码见下。代码练习3 对应蓝桥云课 最大区间 代码见下。

2025-10-29 23:37:55 228

原创 C++ 链式前向星

e = {to, weight, head[from]} //第一个参数是这条边的终点,第二个参数是权重,第三个是这条边 // 在边链表中下一条边的下标。链式前向星结合了数组和链表的特性,通过数组来存储边的信息,通过链表来连接各个顶点.代码练习 金苹果群岛的建设 蓝桥云课 代码见下。

2025-10-26 16:50:52 211

原创 C++ 双向循环链表

双向循环链表:头插法,先创建一个节点,将节点的prev指向虚拟头结点,将节点的next指向虚拟头结点的下一个节点,最后将对应节点的指针指向对应位置。尾插法,先创建一个节点,将节点的prev指向虚拟头结点的prev所指向的指针,将节点的next指针指向虚拟头结点,最后将对应节点的指针指向对应位置。任意插,找到需要插入的指针后,新节点的prev指向插入节点位置的节点,新节点next指向插入节点位置的下一个节点,最后将节点的指针分别指向对应位置。代码练习1 对应蓝桥云课 小王子双链表 代码见下。

2025-10-22 23:12:56 180

原创 C++ 高精度加法、减法、乘法、除法,代码框架

12 | 9 8 7 6 这里的话,按照位次依次枚举每一位数字,枚举的数量便是 10*对应位数,也就是被除数的位数。得到最终的结果,完成了加法:1234567+999765463=1001000030。到了第二步,000 - 1 - 999 = -1000,然后高位继续借1,得到000。002+999=1001 第三步进位1到第四位,将000+1=001。到了第三步,001 - 1 = 000, 可以得到最终的结果。第一步,需要借位,因为原本的000 - 001 = -1,

2025-10-19 15:58:01 410

原创 C++ 完全背包时间优化、完全背包空间优化

至少放一个的话,我们尝试在“前i个物品放满一个容量为j的背包”,拿到一个物品,即前i种物品放满一个容量为j-c[i]的背包,这个时候便是dp[i][j-c[i]] + w[i]状态转移方程:dp[i][j] = max(dp[i-1][j], dp[i][j - c[i]] + w[i])一个都不放,就是前i-1种物品放满一个容量为j的背包,是dp[i-1][j]对于第i个物品,其实有两种选择,一个都不放,至少放一个。代码练习 1 对应蓝桥云课 小明的背包2 代码见下。代码练习2 对应力扣硬币 代码见下。

2025-10-12 19:55:30 360

原创 C++ 完全背包

第二步,状态转移方程,dp[i][j] = max(dp[i-1][j-k*c[i]] + k*w[i]) (0 =< k =< j/c[i]),如果“第i个物品不放入容量为j的背包”,那么转态转化为求“前i-1种物品放入容量为j的背包”的问题;由于不放,所以最大价值就等于“前i-1个物品放入容量为j-c[i]*k的背包”的最大价值加上放入k个第i种物品的价值,即dp[i-1][j-k*c[i]] + k*w[i]。完全背包是01背包的拓展,区别是他可以取0件,1件,,,k件,而01背白只能去0件,1件。

2025-10-12 17:29:39 369

原创 C++ 01背包空间优化

代码练习 2 小兰的神秘礼物 代码见下。代码练习 1 小明的背包1 代码见下。

2025-10-11 14:36:12 170

原创 C++ 01背包

如果第i个物品放入容量为j的背包,那么问题转化为求前i-1个物品放入容量为j的背包,那么此时,所以最大价值等于“前i-1个物品放入容量为j-c[i]的最大背包”+放入第i个物品的价值,即dp[i-1][j-c[i]] + w[i]。dp[i][j] = max(不放, 放)1 状态设计,状态(i,j)表示前i个物品恰好放入容量为j的背包(i属于[0, n], j属于[0, m]),令dp[i][j]表示状态(i,j)下该背包得到的最大价值,即前i个物品恰好放入容量为j的背包所得到的最大价值。

2025-10-11 09:44:40 619

原创 C++ 记忆化搜索

他的基本思想是利用缓存来存储已经计算过的子问题的结果,以便在后续计算过程中直接获取,避免重复计算。2 编码方便,相比于动态规划来说,不需要关注子问题的枚举顺序问题,也不用管数组的下标越界问题,只需要按照深度优先搜索的思路,把代码框架写好,再加入记忆化部分的代码即可。5 递归计算结果并返回:这一步就是深度优先搜索的递归过程,也是递归子问题取最优解的过程,根据状态转移方程来执行递归调用。2 合法性剪枝:因为在递归计算的时候,我们必须保证输入参数的合法性,所以这一步是必要的,比如坐标之类负数的判断。

2025-09-28 18:56:45 321

原创 C++ 拓扑排序

如果结果列表的元素个数为n,说明不存在环;输出结果列表,否则输出-1,代表存在环,不存在这样一种排列。时间复杂度为o(n+m),n是顶点数量,m为边数量。代码练习2,对应蓝桥云课 阿霖的旅游计划,代码见下。代码练习3 对应蓝桥云课 恋爱通关游戏 代码见下。代码练习 1 对应蓝桥云课,走多远 代码见下。2 选择一个入度为0的顶点u放入结果列表。3 删除顶点u和它所有的出边,更新入度。1 统计每个节点的入度。4 回到2 迭代计算。

2025-09-25 23:16:17 530

原创 C++ 线性DP

4 状态转移的过程一定是单向的,把每个状态理解成一个节点,状态转移理解成边,动态规划的求解就是在一个有向无环图上进行递推计算。1 问题求什么,状态就尽量定义成什么,有了状态,再去尽力套状态转移方程。3 状态转移方程中的i变量导致数组下标越界,从而确定那些状态是初始状态。2 动态规划的时间复杂度等于:状态数 X 状态转移 的消耗。代码练习 1 对应蓝桥云课 接龙序列 代码见下。代码练习 2 对应蓝桥云课 数组切分 代码见下。2 利用循环和状态转移方程,填充状态。对应蓝桥云课,最大魅力值,代码见下。

2025-09-20 17:37:26 257

原创 C++ 最短路SPFA

(2)然后判断v在不在队列中,如果不在就将v放入队列中。这样不断从队列中取出结点来进行松弛操作,直到队列为空为止。对于图 G = <V, E>,源点为s,d[i]表示s到i的最短路。代码练习 2 对应蓝桥云课 地铁最短路径与最少换乘。SPFA的最长时间复杂度为km,k为常数,m为边数。第一步,定义边的数据结构 Edge(v, w)代码练习,对应蓝桥云课 路径 代码见下。第四步,SPFA框架代码。第五步,SPFA初始化。第六步,实现松弛操作。

2025-09-14 22:23:49 359

原创 C++ Dijkstra堆优化算法

第二步,辅助数组,对于图G = <V, E>,源点为s,dist[i]表示s到i的最短路,visited[i] 表示dist[i]是否已经确定(布尔值),即s到i的最短路,是否已经确定。第一步,建图,任何算法我们都要去思考,用什么数据结构来存储,这个算法我们采用邻接表来存储,有时候输入数据,并不是我们期待的那样,所以需要对图进行一些处理,这就是建图的过程。第三步,辅助堆,利用一个小顶堆heap存放二元组(v, dist[v]),小顶堆扮演的是优先队列作用,dist[v]值越小的,会从优先队列中优先出列。

2025-09-12 21:03:42 1082

原创 C++ 最短全源路floyd-warshall

第三步,状态转移,令d[k][i][j] 只允许结点[0, k) 作为中间结点的情况下,i到j的最短路,【不包含k】如果最短路不经过k点,则d[k][i][j] = d[k-1][i][j]i->j 无边 d[0][i][j] = inf。第五步,空间优化,d[i][j] = min(d[i][j], d[i][k] + d[k][j]) (0=< i j < n, 1 =< k =< n)算法步骤:第一步,设计状态,令d[k][i][j] 为只允许结点[n, k)作为中间点的情况下,i到j的最短路。

2025-09-07 11:47:13 379

空空如也

空空如也

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

TA关注的人

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