自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

闻缺陷则喜何志丹

本人拙作《闻缺陷则喜》欢迎指教,可在优快云下载

  • 博客(2198)
  • 资源 (86)
  • 收藏
  • 关注

原创 【超音速专利 CN117934523A】一种曲线识别方法

本发明公开了一种基于热力图预测的曲线识别方法及系统。该方法通过曲线识别模型对输入图像进行卷积和下采样处理得到多层特征图,再经上采样和卷积处理生成关键点热力图。训练阶段采用折线段拟合标注曲线,通过密集直线与曲线的交点生成标注点,并转换为高斯热力图进行模型训练。系统包含输入模块、采样模块和输出模块,可部署于工控机等电子设备。该方法解决了传统分割模型在窄曲线检测中断裂、宽曲线后处理困难的问题,实现了工业零件边缘曲线的精准识别。技术方案包括特征图处理、热力图生成、模型训练等步骤,具有较高的实用价值。

2025-11-24 07:00:00 888 26

原创 【前后缀分解 对顶堆】P12570 [UOI 2023] An Array and Medians of Subarrays|普及+

对于一个长度为 $(2 \cdot k + 1)$ 的数组,我们将其元素按非递减顺序排序后,第 $(k + 1)$ 位的数字称为该数组的**中位数**。例如,数组 $[1]$、$[4,2,5]$ 和 $[6,5,1,2,3]$ 的中位数分别是 $1$、$4$ 和 $3$。给定一个长度为**偶数** $n$ 的整数数组 $a$。判断是否可以将 $a$ 分割成若干个长度为**奇数**的子数组,使得所有这些子数组的中位数都相等。形式化地说,你需要判断是否存在一个整数序列 $i_1, i_2, \ldo

2025-11-20 07:00:00 1718 50

原创 【何志丹】蹉跎半生,不知道是否能过45岁的坎

【职业发展反思】一位45岁程序员的技术生涯总结与困境思考 本文是一位资深程序员对20年职业历程的反思与现状分析。作者2003年本科毕业,亲历了行业年龄歧视的演变过程,从"30岁坎"到"37岁坎",如今面临45岁的职业大坎。通过考取软件架构师资质,作者成功跨越前期职业瓶颈,但观察到半数同行已转行。 技术路线上,作者选择深耕技术而非业务,经历了典型的产品开发周期:6个月完成产品、6个月修改、6个月试点、6个月推广。工作年限与项目成败的关系被归纳为半年至七年的不同模式。核心

2025-10-01 07:00:00 3407 88

原创 【逆序对 树状树状 离散化】P1966 [NOIP 2013 提高组] 火柴排队|普及+

涵涵有两盒火柴,每盒装有 $n$ 根火柴,每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为:$ \sum (a_i-b_i)^2$。其中 $a_i$ 表示第一列火柴中第 $i$ 个火柴的高度,$b_i$ 表示第二列火柴中第 $i$ 个火柴的高度。每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对 $10^8-3$ 取模的结

2025-11-23 17:00:00 585 2

原创 【几何 矢量证明】三角形的中线、及重心性质、多边形的质心(面心)

本文探讨了三角形重心的几何性质与计算方法。首先证明了三角形三条中线交于一点G,并推导出向量关系式,得出重心坐标G=(a+b+c)/3。通过面积分析,展示了△GBC面积为△ABC的1/3。文章还区分了几何中心(顶点坐标均值)与面心(考虑面积分布的质心),给出了多边形面心的计算公式。最后提供了学习建议和测试环境说明,强调算法在实际工作中的重要性。全文结合数学推导与几何直观,系统阐述了重心相关的重要几何概念。

2025-11-23 07:00:00 1234 1

原创 【树状数组】P2184 贪婪大陆|普及+

面对蚂蚁们的疯狂进攻,小 FF 的 Tower defence 宣告失败……人类被蚂蚁们逼到了 Greed Island 上的一个海湾。现在,小 FF 的后方是一望无际的大海,前方是变异了的超级蚂蚁。小 FF 还有大好前程,他可不想命丧于此, 于是他派遣手下最后一批改造 SCV 布置地雷以阻挡蚂蚁们的进攻。

2025-11-22 17:00:00 925 1

原创 【树状数组 逆序对】P6687 论如何玩转 Excel 表格|普及+

有一个 $2 \times n$ 的表格,表格内不重不漏地填有 $1 \sim 2 \times n$ 这些数字。你可以进行若干次操作,每次操作可以选择一个 $2 \times 2$ 的正方形区域,然后旋转 $180\degree$。给出现在的状态以及目标状态。问是否可以达到目标状态。如果能,最少操作次数是多少。

2025-11-22 07:00:00 796 1

原创 【树状数组】P7701 [CCC 2014] 提前交卷|普及+

你正在一个狭窄而又长的礼堂里考试,礼堂一共有 $n$ 排,标号从前到后分别为 $1$ 到 $n$。每排有 $6$ 个座位,左边 $3$ 个,右边 $3$ 个,中间是过道。每个座位都有一个从 A 到 F 的字母标识,其中最左的座位的标识是 A,最右的座位的标识是 F,过道在座位标识为 C 和 D 的座位之间,礼堂同时还有两个保密室,一个在最前面(第一排前面),一个在最后面(第 $n$ 排后面)。礼堂里的每个座位一开始被刚好一个考生占用。然而,在考试过程中,$m$ 个不同的考生决定完成所有他们会做的题后依次

2025-11-21 17:00:00 993 1

原创 【二维前缀 二维偏序 离线查询 离散化】P2163 [SHOI2007] 园丁的烦恼|普及+

很久很久以前,在遥远的大陆上有一个美丽的国家。统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草。有一天国王漫步在花园里,若有所思,他问一个园丁道: “最近我在思索一个问题,如果我们把花坛摆成六个六角形,那么……”“那么本质上它是一个深度优先搜索,陛下。”园丁深深地向国王鞠了一躬。“嗯……我听说有一种怪物叫九头蛇,它非常贪吃苹果树……”“是的,显然这是一道经典的动态规划题,早在 N 元 $4002$ 年我们就已经发现了其中的奥秘了,陛下。”“该死的,你究竟是什么

2025-11-21 10:32:12 958

原创 【树状树状 滑动窗口】P11012 「ALFR Round 4」B 颜料|普及+

小山一共有 $n$ 副画作,每副画作都有其主要的颜料。具体的,第 $i$ 副画作的主要颜料的种类为 $a_i$。小山可以选择一段**编号连续**的画作组成一个画展,而画展的绚丽程度为(设该画展由第 $l$ 到第 $r$ 副画组成):$\sum_{i=1}^W\sum_{j=i+1}^W\min(c_i,c_j)$,其中 $c_i$ 表示种类为 $i$ 的颜料在画展中出现的次数,$W$ 为所有颜料种类的值域。现在小山想知道,若要画展的绚丽程度至少为 $k$,应至少选出多少副连续的画作?若无绚丽程度至少为

2025-11-20 17:00:00 615 1

原创 【二阶差分】P2357 守墓人|普及+

本文介绍了树状数组的原理及应用,重点解决P2357守墓人问题。题目要求对墓碑风水值进行区间修改、单点修改和区间查询操作。通过二阶段差分方法,将区间操作转化为差分数组的修改,利用树状数组高效实现区间和查询。给出了核心代码实现思路,包括差分数组的处理和查询函数。该算法能高效处理大规模数据,满足题目对1≤n,f≤2×10^5的要求,时间复杂度为O(log n)级别。

2025-11-19 17:00:00 755 1

原创 【动态规划 矩阵快速幂 前缀和】3699. ZigZag 数组的总数|2123、2435

本文介绍了解决LeetCode 3699题"ZigZag数组的总数I"的两种动态规划方法。题目要求计算满足特定条件的数组数量:相邻元素不相等且不能有3个连续递增/递减元素。第一种方法使用常规动态规划,通过状态转移方程计算,时间复杂度O(Nr^2),空间复杂度O(r)。第二种方法利用矩阵快速幂优化,将状态转移转化为矩阵运算,显著提高了效率。两种方法的核心都是维护前驱状态信息,并通过合理设计状态转移条件来满足题目要求。文章提供了完整的C++实现代码,并详细解释了状态定义、转移方程和优化思路。

2025-11-19 07:00:00 1534

原创 【分治法 前缀和】3748. 统计稳定子数组的数目|2209

如果 nums 的一个 子数组 中 没有逆序对 ,即不存在满足 i < j 且 nums[i] > nums[j] 的下标对,则该子数组被称为 稳定 子数组。同时给你一个长度为 q 的 二维整数数组 queries,其中每个 queries[i] = [li, ri] 表示一个查询。对于每个查询 [li, ri],请你计算完全包含在 nums[li..ri] 内的 稳定子数组 的数量。返回一个长度为 q 的整数数组 ans,其中 ans[i] 是第 i 个查询的答案。注意:子数组 是数组中一

2025-11-18 17:00:00 821 1

原创 【数位dp】3747. 统计移除零后不同整数的数目|1848

本文通过数位动态规划方法解决统计移除零后不同整数数目的问题。给定整数n,统计1到n中移除所有0后的不同整数数量。使用模板化的数位DP类CUperrDP进行状态枚举,遇到含0的数则忽略。示例显示n=10时有9个不同结果(1-9),n=3时为3(1-3)。代码实现了高效的状态转移和结果统计,时间复杂度适用于大数(1≤n≤10^15)。测试用例验证了算法正确性,适用于处理大规模数据。

2025-11-18 07:00:00 731

原创 【CDQ分治】P2717 寒假作业|普及+

他们共有 $n$ 项寒假作业。zzy 给每项寒假作业都定义了一个疲劳值 $a_i$,表示抄这个作业所要花的精力。zzs 现在想要知道,有多少组连续的寒假作业的疲劳值的平均值不小于 $k$?简单地说,给定一个长度为 $n$ 的正整数序列 $\{a_i\}$,求出有多少个**连续**子序列的平均值不小于 $k$。

2025-11-17 17:00:00 849 1

原创 【超音速专利 CN 117710683 A】基于分类模型的轻量级工业图像关键点检 测方法

本发明提出一种轻量级工业图像关键点检测方法,采用分类模型替代传统热图模型,降低了计算量。该方法通过特征提取网络获取图像特征后,利用横纵坐标分类头和可见性分类头分别预测关键点坐标和可见性,并通过交叉熵损失函数计算坐标误差和可见性误差。网络采用步长为1的卷积和MobileNetV3的倒残差结构,确保在低算力设备上实时运行。创新性地引入可见性损失函数,避免检测不存在关键点,且通过加权损失函数平衡不同预测难度。相比热图模型,该方法消除了理论误差下界,具有更高精确度。

2025-11-17 07:00:00 2747 46

原创 【分块 差分数组 逆元】3655区间乘法查询后的异或 II|2454

给你一个长度为 n 的整数数组 nums 和一个大小为 q 的二维整数数组 queries,其中 queries[i] = [li, ri, ki, vi]。对于每个查询,需要按以下步骤依次执行操作:设定 idx = li。当 idx <= ri 时:更新:nums[idx] = (nums[idx] * vi) % (10^9 + 7)。将 idx += ki。在处理完所有查询后,返回数组 nums 中所有元素的 按位异或 结果。

2025-11-16 17:00:00 868

原创 【贪心 特殊到一般 单调栈 并集查找 基环树 前后缀分解】3660. 跳跃游戏 IX|2187

从任意下标 i 出发,你可以根据以下规则跳跃到另一个下标 j:仅当 nums[j] < nums[i] 时,才允许跳跃到下标 j,其中 j > i。仅当 nums[j] > nums[i] 时,才允许跳跃到下标 j,其中 j < i。对于每个下标 i,找出从 i 出发且可以跳跃 任意 次,能够到达 nums 中的 最大值 是多少。返回一个数组 ans,其中 ans[i] 是从下标 i 出发可以到达的最大值。

2025-11-16 07:00:00 860 1

原创 【贪心 图论】517. 超级洗衣机|分数未知

假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。在每一步操作中,你可以选择任意 m (1 <= m <= n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。给定一个整数数组 machines 代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的 最少的操作步数 。如果不能使每台洗衣机中衣物的数量相等,则返回 -1 。

2025-11-15 17:00:00 1856 1

原创 【并集查找 逆向思维 贪心】3607. 电网维护|1700

给你一个整数 c,表示 c 个电站,每个电站有一个唯一标识符 id,从 1 到 c 编号。这些电站通过 n 条 双向 电缆互相连接,表示为一个二维数组 connections,其中每个元素 connections[i] = [ui, vi] 表示电站 ui 和电站 vi 之间的连接。直接或间接连接的电站组成了一个 电网 。最初,所有 电站均处于在线(正常运行)状态。另给你一个二维数组 queries,其中每个查询属于以下 两种类型之一 :[1, x]:请求对电站 x 进行维护检查。如果电站

2025-11-15 07:00:00 594

原创 【贪心 从一般到特殊】3644. 排序排列|1775

给你一个长度为 n 的整数数组 nums,其中 nums 是范围 [0..n - 1] 内所有数字的一个 排列 。你可以在满足条件 nums[i] AND nums[j] == k 的情况下交换下标 i 和 j 的元素,其中 AND 表示按位与操作,k 是一个非负整数。返回可以使数组按 非递减 顺序排序的最大值 k(允许进行任意次这样的交换)。如果 nums 已经是有序的,返回 0。排列 是数组所有元素的一种重新排列。

2025-11-13 17:00:00 930 1

原创 【BFS 右下移动】2556. 二进制矩阵中翻转最多一[i]次使路径不连通|2369

给你一个下标从 0 开始的 m x n 二进制 矩阵 grid 。你可以从一个格子 (row, col) 移动到格子 (row + 1, col) 或者 (row, col + 1) ,前提是前往的格子值为 1 。如果从 (0, 0) 到 (m - 1, n - 1) 没有任何路径,我们称该矩阵是 不连通 的。你可以翻转 最多一个 格子的值(也可以不翻转)。你 不能翻转 格子 (0, 0) 和 (m - 1, n - 1) 。如果可以使矩阵不连通,请你返回 true ,否则返回 false 。注意 ,

2025-11-13 07:00:00 1085 56

原创 【临项消除 前缀和 分治法】3703. 移除K-平衡子字符串|1802

给你一个只包含 '(' 和 ')' 的字符串 s,以及一个整数 k。如果一个 字符串 恰好是 k 个 连续 的 '(' 后面跟着 k 个 连续 的 ')',即 '(' * k + ')' * k ,那么称它是 k-平衡 的。例如,如果 k = 3,k-平衡字符串是 "((()))"。你必须 重复地 从 s 中移除所有 不重叠 的 k-平衡子串,然后将剩余部分连接起来。持续这个过程直到不存在 k-平衡 子串 为止。返回所有可能的移除操作后的最终字符串。子串 是字符串中 连续 的 非空 字符序列。

2025-11-12 17:00:00 932

原创 【DFS 数论】3715完全平方数的祖先个数总和|2235

给你一个整数 n,以及一棵以节点 0 为根、包含 n 个节点(编号从 0 到 n - 1)的无向树。该树由一个长度为 n - 1 的二维数组 edges 表示,其中 edges[i] = [ui, vi] 表示在节点 ui 与节点 vi 之间有一条无向边。同时给你一个整数数组 nums,其中 nums[i] 是分配给节点 i 的正整数。定义值 ti 为:节点 i 的 祖先 节点中,满足乘积 nums[i] * nums[ancestor] 为 完全平方数 的祖先个数。请返回所有节点 i(范围为 [1,

2025-11-12 07:00:00 1469

原创 【前缀和 分类讨论】3714. 最长的平衡子串 II|2202

给你一个只包含字符 'a'、'b' 和 'c' 的字符串 s。如果一个 子串 中所有 不同 字符出现的次数都 相同,则称该子串为 平衡 子串。请返回 s 的 最长平衡子串 的 长度 。子串 是字符串中连续的、非空 的字符序列。

2025-11-11 17:00:00 1387 1

原创 【字符串 最长公共前缀】3720大于 target 的最小字典序排列|1953

给你两个长度均为 n 且仅由小写英文字母组成的字符串 s 和 target。返回 s 的 字典序最小的排列,要求该排列 严格 大于 target。如果 s 不存在任何字典序严格大于 target 的排列,则返回一个空字符串。如果两个长度相同的字符串 a 和 b 在它们首次出现不同字符的位置上,字符串 a 对应的字母在字母表中出现在 b 对应字母的 后面 ,则字符串 a 字典序严格大于 字符串 b。排列 是字符串中所有字符的一种重新排列。

2025-11-11 07:00:00 1417 2

原创 【图论 有向图 环 传递闭包】P8186 [USACO22FEB] Redistributing Gifts S|普及+

FJ 有 $N$ 个礼物给他的 $N$ 头奶牛,这 $N$ 个礼物和 $N$ 头奶牛都被标记为 $1 \dotsm N (1 \le N \le 500)$ 。 每头奶牛都有一个愿望单,记录着一个含有 $N$ 个礼物的排列。比起在愿望单中出现更晚的礼物,奶牛更喜欢先出现在愿望单中的礼物。因为 FJ 太懒了,他直接把 $i$ 号礼物分配给了 $i$ 号奶牛。现在,奶牛们聚在了一起,决定重新分配礼物,以便在重新分配后,每头奶牛都能得到跟原来一样,或是它更喜欢的礼物。对于每个 $i$ ($i$ 从 $1$

2025-11-10 17:00:00 1017 1

原创 【超音速专利 CN 118447008 A】一种光伏板缺陷检测系统

本发明公开了一种光伏板缺陷检测系统,通过嵌入式系统框架整合缺陷检测流程、特征组合分类算法和AI深度学习算法。系统采用边缘算法处理图像避免干扰,结合特征提取与分类实现缺陷识别。AI算法通过FPN融合多尺度特征、RPN提取候选框、ROIAlign抽取局部特征等技术提升检测精度。系统包含参数调节、缺陷分析和模板编辑等模块,通过循环检测流程实现自动化判定,达到预设阈值时自动报警停机。该技术有效提高了光伏板缺陷检测的准确性和效率。 (149字)

2025-11-10 07:00:00 2875 54

原创 字符串贪心:字典序 回文 括号

本文摘要:文章总结了C++中关于字典序、贪心算法、回文串、括号匹配等知识点,通过多个实际题目(如3170、2434、2663等题)讲解相关算法实现。内容涵盖字符串处理、动态规划、贪心策略等技术要点,并附有视频课程链接和测试环境说明,适合希望系统学习C++算法的读者参考。

2025-11-09 17:00:00 1228 1

原创 【贪心 从特殊到一般】3012. 通过操作使数组长度最小|1833

给你一个下标从 0 开始的整数数组 nums ,它只包含 正 整数。你的任务是通过进行以下操作 任意次 (可以是 0 次) 最小化 nums 的长度:在 nums 中选择 两个不同 的下标 i 和 j ,满足 nums[i] > 0 且 nums[j] > 0 。将结果 nums[i] % nums[j] 插入 nums 的结尾。将 nums 中下标为 i 和 j 的元素删除。请你返回一个整数,它表示进行任意次操作以后 nums 的 最小长度 。

2025-11-09 07:00:00 723

原创 【贪心 特殊到一般】1702. 修改后的最大二进制字符串|1825

给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改: 操作 1 :如果二进制串包含子字符串 "00" ,你可以用 "10" 将其替换。 比方说, "00010" -> "10010" 操作 2 :如果二进制串包含子字符串 "10" ,你可以用 "01" 将其替换。 比方说, "00010" -> "00001"请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 x 对应的十进制数

2025-11-08 17:00:00 1479 1

原创 【贪心 特殊到一般 进制】2568. 最小无法得到的或值|1754

给你一个下标从 0 开始的整数数组 nums 。如果存在一些整数满足 0 <= index1 < index2 < ... < indexk < nums.length ,得到 nums[index1] | nums[index2] | ... | nums[indexk] = x ,那么我们说 x 是 可表达的 。换言之,如果一个整数能由 nums 的某个子序列的或运算得到,那么它就是可表达的。请你返回 nums 不可表达的 最小非零整数 。示例 1:输入:nums = [2,1]输出:4解释

2025-11-08 07:00:00 704

原创 【贪心 从特殊到一般】2202. K 次操作后最大化顶端元素|1717

给你一个下标从 0 开始的整数数组 nums ,它表示一个 堆 ,其中 nums[0] 是堆顶的元素。每一次操作中,你可以执行以下操作 之一 : 如果堆非空,那么 删除 堆顶端的元素。 如果存在 1 个或者多个被删除的元素,你可以从它们中选择任何一个,添加 回堆顶,这个元素成为新的堆顶元素。同时给你一个整数 k ,它表示你总共需要执行操作的次数。请你返回 恰好 执行 k 次操作以后,堆顶元素的 最大值 。如果执行完 k 次操作以后,堆一定为空,请你返回 -1 。

2025-11-07 15:30:00 943

原创 【贪心 均值不等式】1969. 数组元素的最小非零乘积|1967

给你一个正整数 p 。你有一个下标从 1 开始的数组 nums ,这个数组包含范围 [1, 2p - 1] 内所有整数的二进制形式(两端都 包含)。你可以进行以下操作 任意 次: 从 nums 中选择两个元素 x 和 y 。 选择 x 中的一位与 y 对应位置的位交换。对应位置指的是两个整数 相同位置 的二进制位。比方说,如果 x = 1101 且 y = 0011 ,交换右边数起第 2 位后,我们得到 x = 1111 和 y = 0001 。请你算出进行以上操作 任意次 以后,nu

2025-11-07 07:00:00 722 1

原创 【区间贪心 差分数组】3362. 零数组变换 III|2424

给你一个长度为 n 的整数数组 nums 和一个二维数组 queries ,其中 queries[i] = [li, ri] 。每一个 queries[i] 表示对于 nums 的以下操作: 将 nums 中下标在范围 [li, ri] 之间的每一个元素 最多 减少 1 。 坐标范围内每一个元素减少的值相互 独立 。零数组 指的是一个数组里所有元素都等于 0 。请你返回 最多 可以从 queries 中删除多少个元素,使得 queries 中剩下的元素仍然能将 nums 变为一个 零数

2025-11-06 17:00:00 960 3

原创 【反悔贪心】LCP 30. 魔塔游戏|分数未知

小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1。每个房间的补血道具/怪物对于血量影响记于数组 nums,其中正数表示道具补血数值,即血量增加对应数值;负数表示怪物造成伤害值,即血量减少对应数值;0 表示房间对血量无影响。小扣初始血量为 1,且无上限。假定小扣原计划按房间编号升序访问所有房间补血/打怪,为保证血量始终为正值,小扣需对房间访问顺序进行调整,每次仅能将一个怪物房间(负数的房间)调整至访问顺序末尾。请返回小扣最少需要调整几次,才能顺利访问所有房间。若调整顺序也无法访问完全部

2025-11-06 07:00:00 1808 46

原创 【贪心 字典序】3720. 大于目标字符串的最小字典序排列|1958

给你两个长度均为 n 且仅由小写英文字母组成的字符串 s 和 target。返回 s 的 字典序最小的排列,要求该排列 严格 大于 target。如果 s 不存在任何字典序严格大于 target 的排列,则返回一个空字符串。如果两个长度相同的字符串 a 和 b 在它们首次出现不同字符的位置上,字符串 a 对应的字母在字母表中出现在 b 对应字母的 后面 ,则字符串 a 字典序严格大于 字符串 b。排列 是字符串中所有字符的一种重新排列。

2025-11-05 17:00:00 1551

原创 【贪心 字典序】2434. 使用机器人打印字典序最小的字符串|1953

给你一个字符串 s 和一个机器人,机器人当前有一个空字符串 t 。执行以下操作之一,直到 s 和 t 都变成空字符串: 删除字符串 s 的 第一个 字符,并将该字符给机器人。机器人把这个字符添加到 t 的尾部。 删除字符串 t 的 最后一个 字符,并将该字符给机器人。机器人将该字符写到纸上。请你返回纸上能写出的字典序最小的字符串。

2025-11-05 07:00:00 564

原创 【贪心 字典序 回文 最长公共前缀】LeetCode3734. 大于目标字符串的最小字典序回文排列|2330

返回 字典序最小的字符串 ,该字符串 既 是 s 的一个 回文排列 ,又是字典序 严格 大于 target 的。如果不存在这样的排列,则返回一个空字符串。如果字符串 a 和字符串 b 长度相同,在它们首次出现不同的位置上,字符串 a 处的字母在字母表中的顺序晚于字符串 b 处的对应字母,则字符串 a 在 字典序上严格大于 字符串 b。排列 是指对字符串中所有字符的重新排列。如果一个字符串从前向后读和从后向前读都一样,则该字符串是 回文 的。

2025-11-04 17:00:00 570 2

原创 【二分查找 容斥原理】3733. 完成所有送货任务的最少时间|1973

给你两个大小为 2 的整数数组:d = [d1, d2] 和 r = [r1, r2]。两架送货无人机负责完成特定数量的送货任务。无人机 i 必须完成 di 次送货。每次送货花费 正好 一小时,并且在任何给定小时内 只有一架 无人机可以送货。此外,两架无人机都需要在特定时间间隔进行充电,在此期间它们不能送货。无人机 i 必须每 ri 小时充电一次(即在 ri 的倍数小时进行充电)。返回完成所有送货所需的 最小 总时间(以小时为单位)的整数。

2025-11-04 07:00:00 761 1

喜缺全书算法册 C++实现

电子书和博文的分工。电子书以:原理、正确性证明、总结为主;博文(题解)以思路、源码、封装类(模板)、测试用例、流程图为主。 当前阶段:以二分查找为主,前缀和为辅,之后会有其它算法的。文字算法见我的博文,视频算法见我的学院课程。 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,两者长度都为 n 。每次操作中,你可以选择交换 nums1 中任意两个下标处的值。操作的 开销 为两个下标的和。你的目标是对于所有的 0 <= i <= n - 1 ,都满足 nums1[i] != nums2[i] ,你可以进行 任意次 操作,请你返回达到这个目标的 最小 总代价。请你返回让 nums1 和 nums2 满足上述条件的 最小总代价 ,如果无法达成目标,返回 -1 。 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的:

2023-09-17

喜缺全书之平凡的经历最新版

《闻缺陷则喜》这本书由何志丹与魏家瑜共同创作,其核心理念是通过暴露和面对问题,促进个人和团队的成长。书名源于作者们对于缺陷的积极态度,他们认为缺陷是学习和进步的契机,而不是阻碍。在当前知识爆炸的时代,分享和交流成为提升效率的关键。 书中涵盖的工作经历部分,作者强调了工作中遇到的挑战和陷阱,这些经历不仅对于技术开发者,如C/C++/VC程序员,具有宝贵的参考价值,也适用于任何行业。作者提到,许多工作中需要但网络上难以找到的信息,正是他们书籍想要填补的知识空白。他们提倡通过阅读、实践和再传授来深化理解和掌握知识,比如,通过反复阅读多本书籍,甚至制作教学视频,以教促学。 生活中的点滴和女儿的成长部分,反映了作者对个人生活和家庭教育的关注。这部分内容可能包含如何平衡工作与家庭,以及如何培养孩子独立思考和解决问题的能力。作者的人生态度和教育观念,可能会给读者提供关于如何在生活中学习和成长的新视角。 投资理财的亏损与教训部分,则揭示了作者在财务管理和投资上的经验和反思。他们可能分享了投资失败的案例,从中提炼出的教训,旨在帮助读者避免同样的错误,提高投资决策的明智程度。这部分内容对于希望提升理

2023-08-18

闻缺陷则喜2021九月版

主要增加:C#调用托管C++,托管C++调用C++

2021-09-11

01BFS最短距离原理和C++实现

n个端点的无向图,编号范围[0,n)。Edges0表示{{n1,n2},...{n3,n4}}表示n1和n2,n3和n4之间有路联接。Edges1表示{{n1,n2},...{n3,n4}}表示n1和n2,n3和n4之间有损坏的路连接。要想让s和d之间至少有一条通道,最小需要维修多少条路。如果无法到达,请返回-1。可能有环,但无自环,重边,可能不联通。

2023-09-29

深度优先搜索(BFS)的原理和C++实现

n个端点的无向图,编号范围[0,n)。每个端点最多4条出边。edges表示{{n1,n2},...{n3,n4}}表示n1和n2,n3和n4之间有边联接。求s到d的最少需要经过多少条边。如果无法到达,请返回-1。可能有环,但无自环,重边,可能不联通。

2023-09-28

美丽塔单调栈O(n)解法

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的: 1 <= heights[i] <= maxHeights[i] heights 是一个 山状 数组。 如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组: 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j] 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k] 请你返回满足 美丽塔 要求的方案中,高度和的最大值 。

2023-09-27

较难算法: 美丽塔 时间复杂度O(nlongn)

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的: 1 <= heights[i] <= maxHeights[i] heights 是一个 山状 数组。 如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组: 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j] 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k] 请你返回满足 美丽塔 要求的方案中,高度和的最大值 。

2023-09-24

让数组不相等的最小总代价

让数组不相等的最小总代价 可运行源码,VS2022 C++17 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,两者长度都为 n 。每次操作中,你可以选择交换 nums1 中任意两个下标处的值。操作的 开销 为两个下标的和。你的目标是对于所有的 0 <= i <= n - 1 ,都满足 nums1[i] != nums2[i] ,你可以进行 任意次 操作,请你返回达到这个目标的 最小 总代价。请你返回让 nums1 和 nums2 满足上述条件的 最小总代价 ,如果无法达成目标,返回 -1 。

2023-09-23

《闻缺陷则喜》之《主册》

闻缺陷则喜 1 第一章:平凡的经历 5 第二章:观念与想法 5 1. 基础 6 1.1. 认知鸿沟 6 2. 传播 6 3. 沟通 6 3.1. 淡化对错 6 3.2. 不要随意批评别人 6 3.3. 参与感 6 3.4. 如果错了,马上认错 7 3.5. 从别人的立场说服对方 7 3.6. 具体到场景 7 4. 交往与合作 7 4.1. 双赢思维 7 4.2. 合作层次 8 4.3. 能力+信息(情报)+资源=成就 8 5. 工作相关 8 5.1. 金融骗局 8 5.2. 对小白而言创业比股票危险的多 9 5.3. 投资比创业稳妥的多 9 5.4. 程序员干不到30岁 9 5.5. 忠诚度与能力 10 5.6. 拒绝无意义加班 10 5.7. 内卷的历史 11 5.8. 关于社保 11 6. 家庭相关 12 6.1. 我的遗产 12 6.2. 金钱观 12 6.3. 借贷观 13 6.4. 女儿的婚姻 13 6.5. 轶事 14 6.6. 生育观 15 6.7. 教育观 15 6.8. 不要因为担心亲友不舒服,而不指出错误 16 7. 工作技巧 16 7.1. 八二原理 16 8.

2022-09-10

二分查找旋转数组源码和视频

包括视频和三个版本的源码(初始、寻找右数组左边界、完成) 已知整数数组nums,先按升序排序后,再旋转。旋转k位后,元素分别为nums[k],nums[k+1]...nums[0]...nums[k-1]。请查找target 是否存在,如果存在返回所在索引;否则返回-1。假定nums没有重复的元素。 假定排序后的数组为{1,2,3,4,5}。 旋转0位:不变。 旋转1位:{2,3,4,5,1} 旋转2位:{3,4,5,1,2} 旋转3位:{4,5,1,2,3} 旋转4位:{5,1,2,3,4} 1.解题思路 观察后,可以得到如下结论: 旋转数组,可以拆分成左右两个升序数组,且左数组的任意元素都大于右数组的任意元素。 分两步: 一,找到数组的分界线RBegin,[0,RBegin)是左数组,[RBegin,n)是右数组。特殊情况:只有一个升序数组,则RBegin为0,左数组为空。 如果是小于等于nums.back(),在右边找;否则在左边找。升序寻找元素之前已经讲过了,就不累赘了。

2023-08-20

C# 获取C++的连续数据

C# 获取C++的连续数据。 两种方式:1,返回C++指针,2,将值存到C#的数组中。

2022-04-02

闻缺陷则喜版本号20220123

包括:问题定义、系统分析、架构、概要设计、详细设计、测试等!

2022-01-23

闻缺陷则喜2021年12月26.doc

闻缺陷则喜,本人拙作,注将软件工程。

2021-12-26

闻缺陷则喜20211205

包括:问题定义、系统分析、架构、概要设计、详细设计、测试等!

2021-12-07

Windows性能监控工具Perfmon使用

Windows性能监控工具Perfmon使用

2021-10-31

关于halcon膨胀腐蚀开闭.doc

关于halcon膨胀腐蚀开闭

2021-11-14

简单的C#类 生成对应的C#类

开发工具: C#2013 功能: 针对简单的C#类,生成对应的非托管C++类,并生成托管C++的转换函数。 应用场景: 界面层、数据层C#,逻辑层C++。 简单的C#类:类型只包括 double string List

2021-11-07

保存文件的同时删除文件,保存用时会略微升高

保存文件的同时删除文件,保存用时会略微升高。没必要花大功夫专门处理 保存500文件用时(毫秒):30906 删除文件同时,保存500文件用时(毫秒):30263 删除500文件用时(毫秒):363 保存500文件用时(毫秒):29155 删除文件同时,保存500文件用时(毫秒):29258 删除500文件用时(毫秒):426 保存500文件用时(毫秒):27992 删除文件同时,保存500文件用时(毫秒):29068 删除500文件用时(毫秒):686 保存500文件用时(毫秒):29172 删除文件同时,保存500文件用时(毫秒):31837 删除500文件用时(毫秒):337 保存500文件用时(毫秒):29373 删除文件同时,保存500文件用时(毫秒):29563 删除500文件用时(毫秒):321 保存500文件用时(毫秒):29663 删除文件同时,保存500文件用时(毫秒):30180 删除500文件用时(毫秒):350

2021-10-11

多线程样例一 读写参数文件

事情起因: 修改配置后,C++函数取读配置xml时,相机缓存满了而引起崩溃。几率发生。 解决思路: 读文件费时间,所以开一个线程读文件。 抽象后的类似demo: 假定读文件需要0.6秒,图像处理(用存文件代替)需要0.5秒,各执行100次。 类和函数 读取文件函数: 一,List<int>增加本序号(0开始)。 二,随机生成5000整数,加到list<int>中。 三,写文件(文件名为序号,如0.txt),文件夹File。 四,Sleep(600)。 五,记录日志:本函数开始执行 时间,结束时间,序号。 六,复制List<int>到参数。 模拟图像处理函数: 一,复制参数 二,参数保存到文件,文件名list<int>第一个int,文件夹img。 三,Sleep(500)。 六,记录日志:本函数开始执行 时间,结束时间,序号。 参数类(跨线程): 一,从list<int>复制参数。 二,复制数据到list<int>。 线程: 启动线程“读取参数”线程:执行100次 读取参数功能。 启动线程“模拟图像处理”线程:执行100次 模拟图像处理。 运行预期结果: File文件夹中有0到100共101个文件。 img有约80个文件。 img有的文件,File文件夹中一定有,且完全相同。用文件夹比较工具(如:BCompare)查看。 查看日志:“读取参数”线程约60秒完成,模拟图像处理”线程约50秒完成。

2021-09-09

C#调用C++的类和函数

C#直接调用C++的函数,C#调用托管C++,C++托管调用非托管C++

2021-08-31

求职中:何志丹C++C#机器视觉 CAD二次开发

内容概要:本文为C++技术专家何志丹的个人简历,详细介绍了其教育背景、职业经历、技术专长及职业规划。他拥有超过20年的C++开发经验,曾担任多家企业架构师与技术负责人,主导多个工业视觉检测系统(如太阳能板、锂电池瑕疵检测)的架构设计与开发,擅长VC++、C#、Halcon、ObjectArx等技术栈。其代表作包括《深入浅出Visual C++入门进阶与应用实例》书籍,并长期活跃于优快云等技术社区,具备扎实的算法能力(力扣周赛多次进入前百名)。近年来聚焦于机器视觉、CAD二次开发、AI集成等领域,强调系统稳定性、模块解耦与团队协作效率。; 适合人群:具备一定C++基础,从事工业软件、机器视觉、CAD开发或希望向架构师方向发展的中高级研发人员。; 使用场景及目标:①学习复杂工业软件系统的架构设计思路,如多进程容错机制、混合编程实践;②了解如何在实际项目中实现关注点分离、插件化架构与稳定运行保障;③借鉴资深开发者的职业发展路径与技术沉淀方法; 阅读建议:此简历不仅展示技术深度,还包含作者对团队建设、项目成败的认知反思,适合结合具体岗位需求进行对标分析,尤其适用于智能制造、自动化检测领域的技术选型与人才评估参考。

2025-09-27

本博文算法对应源码单元测试用例

电子书、博文和附录分工。电子书以总结、原理、正确性证明为主;博文(题解)以思路、源码、封装类(模板)、测试用例、流程图为主。附录:封装好的类、小题题解、很长的源码和单元测试。 本书针对读者:刚刚入职的软件工程师,假定已经学完了“C++”和“算法与数据结构基础”。工程师和学生不同,工程师的首要目标的实用。工程师用到的知识是未知的,很多都是临时用一下,之后几年甚至一辈子都不会用到。受精力的限制,不可能将所有遇到的知识全部学完。本文会有超多用例,方便工程师从最相近的样例开始修改。所以,本文先讲如何使用,再讲原理,最后讲样例;设计(如:流程图)和源码会作为附录提供。

2024-07-05

位运算、状态压缩、枚举子集汇总.html

位运算、状态压缩、枚举子集汇总.html

2024-04-27

本博客配套流程图,会经常更新

Bob 站在单元格 (0, 0) ,想要前往目的地 destination :(row, column) 。他只能向 右 或向 下 走。你可以为 Bob 提供导航 指令 来帮助他到达目的地 destination 。 指令 用字符串表示,其中每个字符: 'H' ,意味着水平向右移动 'V' ,意味着竖直向下移动 能够为 Bob 导航到目的地 destination 的指令可以有多种,例如,如果目的地 destination 是 (2, 3),"HHHVV" 和 "HVHVH" 都是有效 指令 。 然而,Bob 很挑剔。因为他的幸运数字是 k,他想要遵循 按字典序排列后的第 k 条最小指令 的导航前往目的地 destination 。k 的编号 从 1 开始 。 给你一个整数数组 destination 和一个整数 k ,请你返回可以为 Bob 提供前往目的地 destination 导航的 按字典序排列后的第 k 条最小指令 。

2024-04-24

利用二分查找解决H指数问题

利用二分查找解决H指数问题。

2024-01-01

搜索矩阵C++实现:二分查找Z形查找

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。

2023-12-17

长度最短的子数组C++实现

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。 示例 2: 输入:target = 4, nums = [1,4,4] 输出:1 示例 3: 输入:target = 11, nums = [1,1,1,1,1,1,1,1] 输出:0 提示: 1 <= target <= 109 1 <= nums.length <= 105 1 <= nums[i] <= 105

2023-12-10

[二分查找双指针]LeetCode881: 救生艇

给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。 返回 承载所有人所需的最小船数 。

2023-12-03

两数之和 - 输入有序数组

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。 以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。 你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

2023-11-26

C++二分查找算法:132 模式

给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。

2023-11-12

C++算法:第 N 位数字原理、源码、测试用例

给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字。 示例 1: 输入:n = 3 输出:3 示例 2: 输入:n = 11 输出:0 解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是 0 ,它是 10 的一部分。 提示: 1 <= n <= 231 – 1

2023-11-05

C++二分查找算法应用:最长递增子序列 原理、源码、测试用例

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 示例 2: 输入:nums = [0,1,0,3,2,3] 输出:4 示例 3: 输入:nums = [7,7,7,7,7,7,7] 输出:1 参数范围: 1 <= nums.length <= 2500 -104 <= nums[i] <=104

2023-10-29

二分应用:峰值查找 原理、源码、测试用例

1. 题目 长度为n的数组nums,请返回任意一峰值的索引。符合以下条件之一i便是峰值的索引。 n等于1 i等于0 n>1 i等于0 nums[i] >nums[i+1] n>1 i等于n-1 nums[i] > nums[i-1] 0<i<n-1 nums[i]>nums[i-1] nums[i]>nums[i+1] 题目保证nums[i]不等于nums[i+1]。 2. 分析 假定: nums[left,r)符合nums[left]>nums[left-1],且nums[r-1]>nums[r]。显然初始情况nums[0,n)符合。 推论一:如果[left,r)的长度为1,则left就是返回的索引。 推论二:假定left < mid<r。如果mid[mid] > mid[mid-1],则nums[mid,r)也符合假定。如果mid[mid] < mid[mid-1],则nums[left,mid)也符合假定。 推论三:推论二也可以也可以理解成分别抛弃[left,mid)和[mid,r)。令mid = left+(r-left)/2,由于r-left>=2,所以left<mid<

2023-10-22

C++算法:前缀和基础

长度为n的数组nums,共有n+1个以nums[0]开始的子数组。索引范围分别为[0,i),i取值区间[0,n]。preSum[i]记录子数组[0,i)的和。比如:nums = {1,2,3,4},则preSum = {0,1,3,6,10}。通过preSum,我们可以求任意nums的子数组和。子数组[i,j)等于子数组[0,j)减去[0,i),也就是子数组[i,j)的和等于preSum[j] – preSum[i]。如果i等于j,则preSum[i]-preSum[i],和为0,符合计算公式。如果i大于j,则非法,需要提前排除。

2023-10-15

时间复杂度O(40n*n)的C++算法:修改图中的边权

给你一个 n 个节点的 无向带权连通 图,节点编号为 0 到 n - 1 ,再给你一个整数数组 edges ,其中 edges[i] = [ai, bi, wi] 表示节点 ai 和 bi 之间有一条边权为 wi 的边。 部分边的边权为 -1(wi = -1),其他边的边权都为 正 数(wi > 0)。 你需要将所有边权为 -1 的边都修改为范围 [1, 2 * 10^9] 中的 正整数 ,使得从节点 source 到节点 destination 的 最短距离 为整数 target 。如果有 多种 修改方案可以使 source 和 destination 之间的最短距离等于 target ,你可以返回任意一种方案。 如果存在使 source 到 destination 最短距离为 target 的方案,请你按任意顺序返回包含所有边的数组(包括未修改边权的边)。如果不存在这样的方案,请你返回一个 空数组 。 注意:你不能修改一开始边权为正数的边。

2023-10-14

多源最短路径的原理及C++实现

当一层循环执行完后,m_vMat[i1][i2]表示经过[0,i)中的任意个点的最短距离。 初始状态下, m_vMat[i1][i2]表示直达的最小距离,也就是经过0个点。 通过[0,i)中任意个点,i1到i2的最短路径记为PrePathi1i2,通过[0,i+1)中任意个点,i1到i2的距离的路径为Pathi1i2,如果Path不经过Pathi1i2,则和PrePathi1i2相同。如果经过则可以拆分成{i1…i}+{i…i2},显然{i1…i}是PrePathi1i,{i…i2}是PrePathii2,否则替换成PrePathi1i和PrePathii2。 m_vMat同时表示PreMath和Math,如果m_vMat[i1][i]或m_vMat[i][i2]已经更新,会带来错误的结果么?结果是不会,会更新但值不变。 当i1等于i时: m_vMat[i][i2] = min(…, m_vMat[i][i] + m_vMat[i][i2]); 由于m_vMat[i][i]为0,所以右式就是左式。 当i2等于i时,类似。

2023-10-04

堆优化迪氏最短单源路径原理及C++实现

4.1. 时间复杂度 O(ElogE),E是边数。适用与稀疏图。 4.2. 使用前提 边的权为正。可以非连通,非连通的距离为-1。 4.3. 原理 优选队列(小根堆)记录两个数据:当前点到源点距离,当前点。先处理距离小的点;如果距离相等,先处理谁都可以。可以用pair记录,不用重写小于。优先队列只记录如下情况的距离: 一,{0,源点}。 二,任意点的最短距离和可以直达的边。 如果是有向图,则入队数量等于边数,计算出起点最短路径的那一轮。无向图,则翻倍。显然出队数量等于入队数量。优先队列入队和出队时间复杂度都是O(logn),故总时间复杂度为O(nlogn)。

2023-10-03

.有向图计数优化版原理及C++实现

不需要拓扑排序,也不需要并集查找,直接dfs了。完成以下三个职责: 一,DFS那些端点在环上。 二,DFS环上各点此环的长度。 三,DFS非环上各点。

2023-10-02

有向图访问计数的原理及C++实现

现有一个有向图,其中包含 n 个节点,节点编号从 0 到 n - 1 。此外,该图还包含了 n 条有向边。 给你一个下标从 0 开始的数组 edges ,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i] 的边。 想象在图上发生以下过程: 你从节点 x 开始,通过边访问其他节点,直到你在 此过程 中再次访问到之前已经访问过的节点。 返回数组 answer 作为答案,其中 answer[i] 表示如果从节点 i 开始执行该过程,你可以访问到的不同节点数。 2 <= n <= 100000 无自环。

2023-10-01

朴素迪氏最短单源路径的原理及C++源码及测试用例

Dijkstra算法,翻译为迪杰斯特拉或狄克斯特拉。在下驽钝,记不住如此长的翻译,故简称迪氏。 3.1.时间复杂度 O(n2),端点数的平方。 3.2.使用前提 边的权为正。可以非连通,非连通的距离为-1。

2023-09-30

空空如也

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

TA关注的人

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