- 博客(134)
- 收藏
- 关注
原创 前缀和算法解析
前缀和是一种高效处理区间查询的技术。一维前缀和通过预处理数组的累加和,能在O(1)时间内计算任意区间和,公式为s[r]-s[l-1]。二维前缀和扩展至矩阵,通过s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1] + a[i][j]递推构造,查询子矩阵和时使用s[x2][y2] - s[x1-1][y2] - s[x2][y1-1] + s[x1-1][y1-1]。前缀和适用于静态数据或低频修改场景,若需频繁修改应考虑树状数组等数据结构。典型应用包括快速统计区间和、元素
2026-07-21 04:23:56
302
原创 Kadane 算法解析
Kadane算法是一种高效的动态规划方法,用于求解最大子数组和问题,时间复杂度O(n)。其核心思想是通过维护"当前最大子数组和"与"全局最大子数组和",在遍历数组时动态更新。算法可以扩展为记录子数组边界,并应用于二维最大子矩阵问题(时间复杂度O(min(m,n)²max(m,n)))。作为动态规划的空间优化版本,Kadane算法通过状态转移方程current=max(nums[i],current+nums[i]),在常数空间内解决问题,同时支持返回具体子数组位置。该算法在维度扩展时通过压缩列和转化为一维问
2026-07-21 01:49:11
324
原创 P5663 [CSP-J2019] 加工零件
凯凯的工厂正在有条不紊地生产一种神奇的零件,神奇的零件的生产过程自然也很神奇。工厂里有n位工人,工人们从1∼n编号。某些工人之间存在双向的零件传送带。保证每两名工人之间最多只存在一条传送带。如果x号工人想生产一个被加工到第LL1阶段的零件,则与x号工人有传送带相连的工人,都需要生产一个被加工到第L−1阶段的零件(但x号工人自己生产第L−1阶段的零件)。如果x号工人想生产一个被加工到第1阶段的零件,则与x号工人有传送带相连的工人,都需要为x号工人提供一个原材料。
2026-02-27 12:31:59
558
原创 CentOS 10 Stream 配置远程桌面,基于HeadLess gnome-remote-desktop。
CentOS 10 Stream 支持在设置中直接配置远程桌面,但画面直接镜像于物理机,分辨率受限于显示器。对于配置了IPMI等等分辨率无法调整的服务器不友好。以上方法仅支持单用户访问。多用户并发考虑编译安装xrdp,或配置TigerVNC,不走rdp。手动设置HeadLess,可以直接基于远程显示器的分辨率获取画面。首先需要root权限。
2026-01-29 13:22:06
367
原创 深度学习基础——自动求导
自动求导是计算导数的有效方法,主要分为正向传播和反向传播两种模式。与符号求导(精确但表达式膨胀)和数值求导(简单但不精确)相比,自动求导通过链式法则组合基本运算的导数,兼具精度和效率优势,但需存储中间结果。正向传播沿计算图顺序计算各节点导数,反向传播则从输出开始反向累积梯度。雅可比矩阵可高效表示多输入多输出函数的梯度。这两种方法各有适用场景,正向传播适合输入少输出多的情况,而反向传播(即反向模式自动微分)更适用于深度学习等输出少输入多的场景。
2025-12-13 12:00:00
116
原创 扩展卡尔曼滤波器——数学推导
本文介绍了扩展卡尔曼滤波器(EKF)的基本原理和算法流程。EKF通过泰勒展开对非线性系统进行线性化处理,在状态估计和协方差更新中引入雅可比矩阵。文章详细推导了先验估计、先验误差协方差、后验误差协方差的计算过程,并给出了最优卡尔曼增益的求解方法。EKF算法分为预测和更新两个阶段:预测阶段计算状态雅可比矩阵和先验估计,更新阶段计算观测雅可比矩阵、卡尔曼增益并进行状态修正。该滤波器能够有效处理非线性系统的状态估计问题,在预测误差和测量噪声之间实现最优平衡。
2025-12-13 06:00:00
1523
原创 卡尔曼滤波——数学推导
本文推导了离散时间线性系统的卡尔曼滤波算法。首先建立含噪声的状态空间方程,其中过程噪声和测量噪声均假设为零均值高斯白噪声。通过先验估计与实测值的加权融合得到后验估计,引入卡尔曼增益$K_k$来平衡预测与测量的可信度。详细推导了后验误差协方差矩阵$P_k$的表达式,并通过最小化误差协方差迹求得最优卡尔曼增益公式$K_k=P_k^-H^T(HP_k^-H^T+R)^{-1}$。最后给出了先验误差协方差$P_k^-$的递推关系,为完整的卡尔曼滤波算法提供了理论基础。
2025-12-12 12:00:00
542
原创 滤波算法数学前置——协方差
协方差矩阵(Covariance Matrix)用于描述多维数据集中,各个维度(变量)之间的相关性。协方差矩阵的对角线元素为各个变量自身的方差,非对角线元素是不同变量之间的协方差。假设我们有 3 名球员的数据,包含 3 个特征维度(身高。(负相关:样本中最高的球员比较年轻,最矮的球员最老)正值表示正相关,负值表示负相关,0 表示不相关。我们需要将每一列数据减去该列的均值,得到。(正相关:身高越高,体重通常越重)(方差)以及状态变量之间的。),即变量间的联动关系。),即数据的离散程度。:体现不同变量之间的。
2025-12-11 12:00:00
691
原创 卡尔曼滤波器——数据融合
融合后的方差(3.2)小于任何一个单独传感器的方差(4.0 和 16.0)。说明传感器融合能够产生比任何单一传感器都更可靠的估计结果。的不确定性最小,即让估计值的方差。对于不同传感器的数据进行融合。我们的目标是让估计值。
2025-12-11 06:00:00
748
原创 卡尔曼滤波器——递归算法
新的测量值对结果的影响越来越小。这对静态系统是好的,但如果系统状态在变化,或者测量噪声不稳定,简单的平均就不够用了。对于一个数值进行估计,最直观的方法是多次测量取平均值。时的估计误差远大于k时的测量误差时,估计值会趋近于测量值。为了处理不同精度的传感器和估计值,我们将系数。,只需要保留上一时刻的估计值和误差状态即可。,测量误差很大时,估计值会趋近于上一次估计值。替换为一个动态变化的参数。为当前时刻的估计值,为上一时刻的估计值,为当前时刻的测量值。
2025-12-10 21:46:11
898
原创 滤波算法数学前置——线性化
本文介绍了非线性系统的线性化方法。首先定义了线性系统需满足叠加原理,并通过示例说明如何判断系统的线性性。然后详细讲解了利用泰勒展开进行线性化的过程:在平衡点附近对非线性函数展开,保留常数项和一阶线性项,忽略高阶项。通过单变量和多变量系统的实例演示了具体步骤,包括寻找平衡点、引入偏差变量、计算雅可比矩阵等。特别地,对于二维系统,线性化后可以得到以雅可比矩阵表示的线性微分方程组。这种方法适用于在平衡点附近对非线性系统进行局部线性近似。
2025-12-10 21:27:53
943
原创 滤波算法数学前置——特征值与特征向量
本文介绍了线性变换中特征值与特征向量的概念及其应用。通过具体矩阵A=[1 1;4 -2]的示例,演示了求解特征值(λ1=2,λ2=-3)和对应特征向量的过程。利用这些特征向量构建过渡矩阵P,可将A对角化为Λ=diag(2,-3),实现方程组解耦。特别展示了该方法在解微分方程组中的应用:通过基变换x=Py将耦合方程转换为解耦形式,最终得到系统解。最后指出,通过分析特征值符号和性质(实部正负、虚部存在等)可判断系统稳定性(稳定、不稳定)和动态行为(振荡),为微分方程系统的研究提供了有效工具。
2025-11-12 02:14:21
961
原创 LeetCode 3397. 执行操作后不同元素的最大数量
对于这题,我们可以考虑升序排序,遍历每个元素,记录其前一个元素的值,若与前一个元素不同,则对当前元素进行减k操作,否则变为前一个元素加一,若当前元素比前一个元素大,此时答案加一。这样即可令其尽量不同且紧邻。
2025-10-18 14:15:23
197
原创 LeetCode 494. 目标和
对于这题,我们可以用回溯解决,枚举所有的 + - 组合,求出答案等于target的组合个数。也可以利用动态规划来解决,且更高效。对于 nums ,我们可以依据每个元素前面的符号来将其分为两个集合P Q,其中P为前面加正号的数,Q为前面加负号的数。其结构与 416. 分割等和子集 一模一样。
2025-10-07 14:27:54
270
原创 LeetCode 416. 分割等和子集
对于每个数字 num,我们更新 dp 数组。对于一个容量 i(从 target 到 num),有两种情况:放入或不放入。本题为0-1背包问题的变体,可以将背包容量看作nums元素总和的一半,目标是计算能否装满背包。为是否存在一个子集,其和为 i。
2025-10-07 00:00:00
307
原创 LeetCode 152. 乘积最大子数组
但在最大子数组积的问题中,情况变得复杂了,主要因为负数的存在:一个负数乘以一个大的正数,会变成一个小的负数,但这个小的负数如果再乘以一个负数,就会“负负得正”,变成一个非常大的正数。这意味着,我们在遍历时,不能只关心当前的最大积,因为一个当前看起来很小的负数积(例如 -100),可能在下一步遇到一个负数后,摇身一变成为最大的正数积。对于最大子数组和,一个负数总是会减小当前的和,如果和变成了负数,我们就可以大胆地从下一个数重新开始,因为它对后续的和只有“拖累”作用。: 以当前元素结尾的连续子数组的最大乘积。
2025-10-06 06:31:51
290
原创 LeetCode 918. 环形子数组的最大和
一个跨越头尾的子数组,例如 […],其实等价于从整个数组中移除了中间的一段不包含在内的“普通”子数组。有一个重要的边界情况需要处理:如果数组中所有的数都是负数,那返回的会是一个空数组。这是不合法的,所以此时应该返回最大子数组和。如果我们想让这个“环形”子数组的和最大,那么我们应该从数组总和中减去一个和为最小的“普通”子数组。这种情况和非环形数组完全一样。所以,这种情况下的最大和 = 数组总和 - 最小子数组和。最大子数组是“普通”的,没有跨越数组的头尾。最大子数组是“环形”的,跨越了数组的头尾。
2025-10-06 06:16:20
199
原创 浅解Letterbox算法
Letterbox是一种在计算机视觉(尤其是在YOLO、SSD等目标检测模型中)广泛使用的图像预处理技术。它的核心目标是将不同尺寸、不同长宽比的原始图片,转换成符合模型输入要求的固定尺寸,同时保持图片原有的长宽比不变,避免图像内容因拉伸或压缩而失真。这个名字来源于电影术语“信箱模式”(Letterboxing),即在宽屏电影在标准屏幕上播放时,为了保持画面比例,会在屏幕的上下方添加黑边。Letterbox算法做的正是类似的操作。
2025-09-21 16:39:45
1065
1
原创 LeetCode 189. 轮转数组
对于 nums = [1, 2, 3, 4, 5, 6, 7, 8, 9], k = 3。对于这题,一个最直观、最简单的方法是:开一个新数组,将原数组的元素按新顺序填入新数组。考察一下整个交换过程,可以发现,其可以被拆解为许多"环"交叠在一起。还有什么办法,能够使空间复杂度降至。此时 nums = [7, 8,,发现回到起点,结束这次操作。此时 nums = [7,但除此以外,还有另一种方法。此时 nums = [,而每个环的长度 =令start = 0。
2025-09-05 23:26:29
370
原创 LeetCode 1792. 最大平均通过率
建立一个大根堆,每次从其中取出收益最大的班级,安插额外学生后进堆,直到额外学生安插完毕,最后计算通过率。对于这题,一个显然的贪心思想是:将extrastudents给能获得最高通过率收益的班级。
2025-09-01 09:07:23
301
原创 LeetCode 3665. 统计镜子反射路径数目
很经典的题型,但由于有方向限制,在更新 dp 时需要多考虑方向。则到达某个格子的总路径数就是。更新时,分方向讨论。
2025-08-31 13:58:38
441
原创 LeetCode 37.解数独
那么我们可以利用回溯,遍历所有空格,在其中填入可能的数字并检查有效性,递归调用解决下一个空格,如果后续路径失败,就将格子恢复原状。对于这题,首先考虑数独的解的条件是什么:每行、每列、每个九宫格中没有重复的数字。那么在对每个空格进行填数时如何考虑其有效性?检查其所在行列及九宫格。
2025-08-31 13:29:34
274
原创 LeetCode 2140. 解决智力问题
其中:j = min(i + questions[i][1] + 1, questions.size);可以注意到该题与打家劫舍有共通性。打家劫舍即为 brainpower 均为 1 的情况。即:从后往前更新,f[i] 为不解决 i 和解决 i 并跳转到 j 两种决策的最大值。个问题开始,到最后一个问题为止,所能获得的最高分数。设 f[i] 为从第。
2025-08-26 19:31:33
234
原创 LeetCode 100.11 滑动窗口最大值
在单调队列中,我们需要维护队列的单调性。若队列中元素比新元素小,则 pop 掉;若队列中元素即将离开窗口,也 pop 掉。这样在队列最前端的元素就是最大元素了。考虑用双端单调队列解决。
2025-08-22 08:00:00
233
原创 LeetCode100.10 和为 K 的子数组
对于这题,可以考虑将其转化为类似两数之和的问题。构建原数组的前缀和数组。表示从 0 到 i-1 的元素和。
2025-08-22 02:02:55
286
原创 windows11中配置Clion以使用c++20的module特性
c++20提出了module这一特性,允许开发者通过import xxx来更高效地引入库,然而现今只有部分编译器实现了这一功能。我们可以通过在Clion中配置工具链以在Clion上使用这一特性。
2025-08-17 05:41:08
951
原创 Leetcode 2787. 将一个数字表示成幂的和的方案数
换句话说,你需要返回互不相同整数。等等看作物品,最后即求装满背包的方案数。对于这题,不妨将其看作是 0-1背包。由于答案可能非常大,请你将它对。
2025-08-17 01:05:41
341
原创 P5683 [CSP-J2019 江西] 道路拆除
A 国有n座城市,从1∼n编号。1号城市是 A 国的首都。城市间由m条双向道路连通,通过每一条道路所花费的时间均为1单位时间。现在 A 国打算拆除一些不实用的道路以减小维护的开支,但 A 国也需要保证主要线路不受影响。因此 A 国希望道路拆除完毕后,利用剩余未被拆除的道路,从 A 国首都出发,能到达s1号与s2号城市,且所要花费的最短时间分别不超过t1与t2(注意这是两个独立的条件,互相之间没有关联,即不需要先到s1再到s2。
2025-08-09 00:00:00
732
原创 P1347 排序
一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如,一个有序的数列ABCD表示ABBCCD。在这道题中,我们将给你一系列形如AB的关系,并要求你判断是否能够根据这些关系确定这个数列的顺序。
2025-08-08 16:00:00
374
原创 P1613 跑路
小 A 的工作不仅繁琐,更有苛刻的规定,要求小 A 每天早上在600之前到达公司,否则这个月工资清零。可是小 A 偏偏又有赖床的坏毛病。于是为了保住自己的工资,小 A 买了一个空间跑路器,每秒钟可以跑2k千米(k是任意自然数)。当然,这个机器是用longint存的,所以总跑路长度不能超过maxlongint千米。小 A 的家到公司的路可以看做一个有向图,小 A 家为点1,公司为点n,每条边长度均为一千米。小 A 想每天能醒地尽量晚,所以让你帮他算算,他最少需要几秒才能到公司。数据保证1到n。
2025-08-08 08:00:00
617
原创 P1037 [NOIP 2002 普及组] 产生数
给出一个整数n和k个变换规则。n234k2。2⟶53⟶6上面的整数234234534264564共4种不同的产生数。现在给出一个整数n和k个规则。求出经过任意次的变换(0次或多次),能产生出多少个不同整数。仅要求输出个数。
2025-08-08 00:00:00
570
原创 P2872 [USACO07DEC] Building Roads S
给定n个点的坐标,第i个点的坐标为xiyi,这n个点编号为1到n。给定m条边,第i条边连接第ui个点和第vi个点。现在要求你添加一些边,并且能使得任意一点都可以连通其他所有点。求添加的边的总长度的最小值。
2025-08-07 13:30:00
416
原创 P10928 走廊泼水节
给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树。求增加的边的权值总和最小是多少。树中的所有边权均为整数,且新加的所有边权也必须为整数。
2025-08-07 09:00:21
324
原创 P4089 [USACO17DEC] The Bovine Shuffle S
Farmer John 坚信快乐的奶牛能产更多的奶,因此他在谷仓里安装了一个巨大的迪斯科球,并计划教他的奶牛跳舞!在查阅了流行的奶牛舞蹈后,Farmer John 决定教他的奶牛“Bovine Shuffle”。Bovine Shuffle 包括他的N头奶牛(1≤N≤100000)以某种顺序排成一行,然后进行连续的“洗牌”,每次洗牌可能会重新排列奶牛的顺序。为了让奶牛更容易找到自己的位置,Farmer John 为他的奶牛队伍标记了位置1N。
2025-08-06 10:54:38
455
原创 P4017 最大食物链计数
你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧。
2025-08-06 10:32:06
439
原创 P1550 [USACO08OCT] Watering Hole G
Farmer John 的农场缺水了。他决定将水引入到他的n个农场。他准备通过挖若干井,并在各块田中修筑水道来连通各块田地以供水。在第i号田中挖一口井需要花费Wi元。连接i号田与j号田需要PijPjiPij)元。请求出 FJ 需要为使所有农场都与有水的农场相连或拥有水井所需要的最少钱数。
2025-08-04 18:00:00
307
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅