自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 01trie

本文介绍了一种基于01字典树的算法,用于求解数组中两个数异或结果的最大值。算法首先构建字典树存储所有数字的二进制表示,然后通过逐位异或匹配策略快速查找与给定数异或结果最大的数。关键点在于从高位到低位处理二进制位,优先选择能产生1的异或位。文章还指出该算法可以应用于树形结构中路径异或值的计算问题,通过预处理节点到根节点的异或值,将问题转化为数组元素异或最大值问题。代码实现包括字典树构建、最大值查询和主函数处理流程。

2025-09-13 19:42:02 294

原创 字典树初步

该代码实现了一个字典树(Trie)结构,用于高效处理字符串前缀查询。主要功能是:1)插入字符串到字典树;2)查询某个字符串是否为之前插入字符串的前缀。代码使用二维数组nex存储子节点,cnt数组记录前缀出现次数。初始化idx=2,根节点为1。insert函数将字符串插入字典树并更新前缀计数,count函数查询字符串前缀出现次数。主程序读取n个插入字符串和m个查询字符串,输出每个查询结果(Y/N)。该实现适用于大规模字符串前缀匹配问题,时间复杂度为O(L),L为字符串长度。

2025-09-13 18:50:00 271

原创 manacher算法

本文介绍了Manacher算法求解最长回文子串的实现。算法首先在字符串中插入特殊字符'#'进行处理,用数组p[i]记录以i为中心的最长回文半径。通过维护当前最右回文边界R和中心点C,利用对称性优化计算。代码示例展示了该算法的具体实现过程,包括预处理字符串、Manacher算法主体以及结果提取。最终最长回文子串长度为p[i]-1的最大值。注意预处理时需倒序遍历避免覆盖,处理后的字符串长度为2n+1。

2025-09-11 13:59:45 293

原创 KMP & 字符串hash算法

本文介绍了两种字符串匹配算法:KMP算法和字符串哈希。KMP算法通过预处理模式串的next数组(最大相同真前后缀)实现高效匹配,使用时需注意字符串下标从1开始。字符串哈希利用无符号长整型自动取模特性,通过计算子串哈希值进行匹配,避免了复杂的预处理。文中给出了两种算法在"斤斤计较的小Z"问题中的具体实现代码,并指出KMP更加严谨但实现复杂,而字符串哈希更简单但有极小概率的冲突风险。两种算法各有优势,可根据实际需求选择使用。

2025-09-11 11:23:18 334

原创 数位DP .

数位DP是一种解决区间数字统计问题的算法,主要用于计算给定区间[L,R]内满足特定条件的数字个数。其核心思想是对数字的每一位进行动态规划,时间复杂度为O(logN)。典型例题包括windy数、7的意志和手机号码问题。解决步骤通常包括预处理DP数组、分解数字位数、递归或迭代计算满足条件的数字数量。关键点在于处理前导零、数字限制条件以及状态转移时的边界条件。不同问题需要设计不同的状态表示,如连续数字、数字和模数等。记忆化搜索是常用优化手段,可显著提升效率,但需注意状态设计的合理性和无后效性。

2025-09-06 20:17:35 289

原创 状压DP -

状态压缩是一种将多状态问题转化为二进制表示的技术,常用于动态规划中以降低复杂度。文章通过两个典型例题进行说明:糖果问题使用二进制表示糖果种类,通过动态规划寻找最少包数;愤怒的小鸟问题则利用状态压缩优化抛物线组合的枚举。两种案例都展示了如何将状态转化为二进制位,并通过位运算实现高效求解。关键在于理解状态压缩的核心思想:用二进制位表示状态,通过或运算合并状态,最终求得最优解。这种方法特别适合状态数量有限且状态间可合并的NP问题。

2025-09-04 13:43:27 461

原创 区间DP .

区间DP是一种将大区间问题拆分为子区间合并的动态规划方法。其特点包括:1) 将区间分解为连续子区间;2) 通过合并相邻子区间逐步求解。典型应用包括石子合并(最小化合并代价)、涂色(最少操作次数)和制作回文串(最小修改成本)。对于环形区间问题(如能量项链),可通过复制数组展开处理。解题时只需关注当前区间的状态转移,无需考虑子问题的具体解法。关键步骤包括定义状态、建立转移方程,并按区间长度从小到大进行递推计算。

2025-09-02 19:59:21 763

原创 换根DP -

本文介绍了换根DP算法及其应用。该算法通过两次遍历树结构解决问题:第一次计算子树信息,第二次利用父节点信息更新全局解。文中以点权*长度问题为例,说明其与计算树深度问题的相似性,均可采用相同思路解决。算法关键在于正确处理父子节点间的信息传递关系,适用于树形结构上的动态规划问题。

2025-08-30 12:40:41 210

原创 路径相关树形DP

本文摘要: 文章对比分析了两种树上路径问题的解法。树上路径1采用动态规划方法,通过sum+和sum-操作抵消t上节点,最终sum等于与t相邻子树的dp[root]之和。树上路径2因允许节点被选两次,需要从下向上更新路径以避免更新困难。建议画图辅助理解两种算法的实现过程。

2025-08-30 10:40:00 249

原创 自下而上的树形dp

本文介绍了树形动态规划中的三个经典问题:最大独立集、最小点覆盖和最小支配集。通过三个例题(蓝桥舞会、战略游戏和皇宫守卫)展示了对应的树形DP解法。每个问题都给出了详细的分析和C++代码实现,包括状态转移方程和关键处理步骤。这些算法都采用深度优先搜索遍历树结构,通过后序遍历的方式自底向上计算各节点的状态值,最终在根节点处得到最优解。

2025-08-28 22:53:27 224

原创 自上而下树形DP

本文介绍了三个树形动态规划问题。1.蓝桥舞会问题:通过DFS遍历树结构,计算每个节点参加/不参加舞会时的最大快乐值,采用自底向上的动态规划方法。2.小明的背包6:在树形结构中处理背包问题,使用DFS后序遍历,通过双重循环计算以每个节点为根的子树在不同容量下的最大价值。3.树的最大值问题:总结性指出树形DP通常采用DFS遍历,将子树结果合并到父节点,适用于具有树形结构的优化问题。这些案例展示了树形DP在处理层次结构问题中的典型应用。

2025-08-28 16:22:56 289

原创 二维费用背包 & 分组背包

本文介绍了两种背包问题的动态规划解法。二维费用背包模型例题"小蓝的神秘行囊"和分组背包模型例题"小明的背包5"都采用了类似的三重循环解法:外层遍历物品,内层两层循环分别逆序遍历两种不同的容量限制(如体积V和质量M),通过状态转移方程dp[j][k] = max(dp[j][k], dp[j-v][k-m]+w)来更新最优解。两种问题虽然类型不同,但都体现了动态规划处理多重约束条件的核心思想,最终输出dp[V][M]作为最优解。

2025-08-26 19:48:31 219

原创 单调队列优化多重背包问题

该视频讲解了多重背包问题的单调队列优化方法。通过将状态按模v分组,将二维DP优化为一维。关键点在于:1)状态转移时需考虑上层DP值;2)单调队列维护当前窗口最大值;3)代码实现时需注意更新顺序和整数除法特性。最终算法通过单调队列优化将时间复杂度降低到O(NV)。(98字)

2025-08-25 14:30:12 264

原创 多重背包

本文介绍了多重背包问题的两种解法:基础模型和二进制优化模型。基础模型采用三层循环(物品数、数量、容量)实现,时间复杂度为O(NSV);二进制优化模型通过将物品数量拆分为2的幂次方组合,将问题转化为0-1背包,提升效率。两段代码均使用动态规划思想,通过逆序遍历容量保证物品只被选取一次。基础模型简单直观但效率较低,二进制优化模型通过数学优化显著降低了时间复杂度。两种方法最终都能正确求解背包最大价值问题。

2025-08-23 11:35:57 323

原创 完全背包问题

完全背包问题一维DP解法摘要:与0/1背包不同,完全背包允许物品无限次使用,需采用正序遍历的一维DP。状态转移方程为dp[j] = max(dp[j], dp[j-w]+v),其中j从w到V顺序更新。示例代码演示了处理N个物品、容量V的背包问题,通过两层循环(物品循环+容量正序更新)实现,最终输出dp[V]为最大价值。关键区别在于遍历顺序,这是完全背包与空间优化0/1背包的核心差异。(字数:146)

2025-08-21 13:11:15 358

原创 0/1背包问题

本文介绍了0/1背包问题的两种实现方法及优化。第一部分展示了基础解法,使用二维数组记录状态,时间复杂度为O(NV)。第二部分优化空间复杂度至O(V),通过逆序遍历背包容量实现。第三部分给出"背包与魔法"例题的特殊解法,在传统背包基础上增加魔法使用状态,使用二维数组dp[j][n]记录是否使用魔法的情况。该解法同样采用逆序遍历优化空间,处理普通物品和魔法物品两种状态转移情况。

2025-08-21 12:54:28 257

原创 LCS(最长公共子序列)

LCS只有N^2复杂度解法。

2025-08-20 13:44:16 251

原创 LIS(最长上升子序列)

LIS:(注意:最后答案要取dp[i]最大值,而不是直接ans = dp[n]

2025-08-20 13:07:49 227

原创 离散化 -

2025-08-20 11:09:13 142

原创 构造(附带例题)

这篇文章介绍了四种数学构造问题的解法:1)小蓝的数学题给出了两种答案构造方式;2)最小公差问题解析;3)简单连通图的构造方法;4)数字s的构造技巧。文章通过具体案例展示了如何运用数学思维进行问题构造,内容涵盖数列、图论、数字组合等多个数学领域,提供了实用的解题思路和方法。

2025-08-19 14:27:12 301

原创 构造:算法设计中的“魔法工具箱

与暴力枚举(尝试所有可能)或数学证明(验证解的存在性)不同,构造更强调。的网格图,构造一条哈密顿回路(经过每个顶点恰好一次的环)。:构造一个满二叉树(每个节点有 0 或 2 个子节点)。:问题需要满足特定最终条件(如迷宫求解、回溯问题)。:问题具有周期性或对称性(如构造格雷码、分形图形)。:问题具有贪心选择性(如区间调度、哈夫曼编码)。:问题与数论、代数相关(如生成素数、构造幻方)。:给定带权无向图,构造一棵最小生成树(MST)。:问题具有递归结构(如二叉树、分形图形)。:利用数学公式或性质直接构造解。

2025-08-19 14:26:29 895

原创 差分(附带例题&题解)

差分(附带例题&题解)

2025-08-19 13:51:24 549

原创 裴蜀定理

裴蜀定理教学与应用

2025-08-18 14:03:16 456

原创 gcd与lcm

gcd与lcm关系

2025-08-18 13:06:47 226

原创 埃式筛法&欧拉筛法&质数分布定理

(时间复杂度控制):每个合数可能被多个较小质因数筛出,如120会被2,3,5重复筛选,造成时间浪费(这点不如欧拉筛,欧拉筛不会重复筛选)注意:先将p * i标记为素数,再if (i % p == 0) break;:每个合数必能分解出质数,从而一定会被筛出。时间复杂度O(nloglogn)时间复杂度:O(N)

2025-08-17 13:01:01 343

原创 唯一分解定理/约数个数/约数和定理

唯一分解定理/约数个数/约数和定理

2025-08-17 11:38:36 233

原创 扫地机器人(2025蓝桥杯省A组 H题)

这是一道关于基环树结构的算法题,要求计算扫地机器人在环形路径上的最大工作距离。解题思路结合了拓扑排序、基环树处理和单调队列优化: 使用拓扑排序识别基环树中的环结构,将非环节点标记 对环上每个节点进行DFS,计算子树中的最长路径(直径) 将环展开为链,使用前缀和预处理距离 通过单调队列优化,在O(n)时间内找到环上的最优路径组合 算法综合运用了基环树拆解、动态规划和滑动窗口技巧,最终输出最大工作距离。时间复杂度为O(n),适用于大规模数据。

2025-08-16 23:23:58 1069

原创 树的直径(树形DP)

几道相关的树的直径(树形DP)例题

2025-08-16 12:16:42 317

原创 地雷阵(蓝桥杯C++A组省赛题解)

2025蓝桥杯省A真题---地雷阵 题解;

2025-08-13 13:06:10 188

原创 好串的数目

蓝桥杯真题-好串的数目,动态规划解法

2025-08-12 17:06:48 249

原创 贪心算法--

28道经典贪心算法讲解, 分析

2025-03-09 21:53:43 3018

原创 IP协议

IP地址=目标网络+目标主机IP协议是网络层协议。

2025-02-22 17:11:58 906

原创 TCP协议

挥手时,server可能不愿意和client断开连接,这时就不会出现捎带情况,所以四次挥手。,会在发送最后一次挥手之后,会再等待一段时间(接收超时数据,保证游离报文在网络中消散,同时确保接收方收到ACK(可能要重发ACK))(等待两个MSL时间后才会关闭)有可能会,此时产生回绕,但这不会引发相同序号报文的问题,因为缓冲区大小是有限的,产生回绕时,历史相同序号的报文早就消散了。当client发送速度大于server接收速度时,server会把来不及处理的报文丢弃,这会造成时间/资源浪费。

2025-02-20 20:27:01 750

原创 动态规划

动态规划60道经典题型

2025-02-18 18:19:36 1469

原创 HTTPS

https原理,https加密方案, 中间人攻击,CA证书与签名

2025-02-17 20:45:19 1296

原创 虚函数_抽象类

只有返回类型/函数名/参数类型&顺序 都一样,才是虚函数重写,才有虚函数特性。多继承中面对不同路径,分析是否动态联编时,只看指针类型是否为虚基类即可。抽象类不可为函数返回值类型,函数参数类型,不可定义对象。参数类型/数量不同:普通重载函数,没有虚函数特性。派生类中没有重写纯虚函数,依然是纯虚函数,抽象类可定义指针,指向非抽象类的派生类对象。虚函数不可友元函数,不可静态成员函数。抽象类:含有至少一个纯虚函数的类。纯虚函数:函数声明=0;只有函数类型不同:报错。

2025-02-17 14:01:08 136

原创 守护进程

什么是守护进程 / 手动实现守护进程 / 任务组&会话概念 / linux前后台切换

2025-02-11 23:30:37 350

原创 序列化/反序列化与TCP通信协议

序列化/反序列化, 协议, tcp

2025-02-10 17:04:25 1082

原创 Tcp_socket

TCP——Socket

2025-02-10 16:37:04 956

原创 UDP_socket

Udp&socket, ChatServer/EchoServer/Dictserver的实现

2025-02-06 14:36:42 700

线程-3-线程控制ooo-

线程-3-线程控制ooo-

2024-12-31

空空如也

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

TA关注的人

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