自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【算法竞赛】埃氏素数筛法(附竞赛例题)

质数是指大于 1 的自然数中,除了 1 和它本身以外,不能被其他正整数整除的数。判定一个数是否是质数是许多算法问题的基础,如数论、加密算法和数学建模等。对于大规模的质数筛选,朴素方法的效率往往不够理想,而埃拉托色尼筛法是一种高效的筛选方法,能够在O(nlogn)的时间复杂度内筛选出n以内的所有质数本文将详细介绍埃拉托色尼筛法的原理、代码实现,并结合一个蓝桥杯的相关题目进行解析

2025-04-02 11:31:23 524

原创 【算法竞赛】并查集经典应用(修改数组问题)

本题的核心目标是将一个可能包含重复元素的数组修改为无重复整数的数组。具体操作如下:按顺序遍历数组的每个元素。如果当前元素之前已经出现过,则不断增加其值,直到变为未出现过的数。经过这样的修改,最终数组中不含重复元素。由于题目要求数组的元素最大可达1e6,因此在实现过程中需要高效的去重方案,接下来,我们将详细探讨桶数组法和并查集法

2025-04-01 14:59:40 477

原创 【算法竞赛】动态规划+记忆化搜索(作物杂交问题)

在一个农业实验室中,科学家正在研究作物的杂交方案。已知:初始作物:共有 m 种作物,可以直接种植。杂交方案:共有 k 种杂交方案,每种方案可以将两个已有作物杂交出一种新作物(杂交时取作物的最长时间,作物之间可以同时进行杂交)。生长时间:每种作物 i 需要 w[i] 单位时间才能成熟。目标:科学家希望培育出第 t 号作物,请计算最短所需时间。

2025-03-31 16:04:17 648

原创 【算法竞赛】经典动态规划-砝码称重(蓝桥2021省A1)

本题可以看作背包问题的变形,我们需要计算可以称量出的所有可能重量,因此可以使用动态规划进行求解(1)状态定义设前i个砝码能否称量出重量j,其值为 1(可以称量出)或 0(不能称量出)i :当前可以选择前 i 个砝码j :代表当前天平所能达到的重量目标:找到所有可能的 j 值,使得dp[N][j]=1(2)状态转移方程每个砝码可以选择:不使用这个砝码:dp[i][j]=dp[i-1][j]使重量增加:dp[i][j]=dp[i-1][|j-Wi|]使重量减少:dp[i][j

2025-03-30 13:05:03 685

原创 【算法竞赛】动态规划解决路径问题(附经典例题)

提到路径问题,我们的第一反应是用搜索,也就是bfs或者dfs来做,但是有些情况,我们可以直接用动态规划来解决,因为当前点的结果和当前点的状态,也就是坐标有关,并且当前点的结果取决于它的上一步位置在哪,也就是状态转移。

2025-03-06 12:26:39 580

原创 【算法竞赛】数位dp(超详细版,新手易懂)

数位dp是一个在竞赛中非常常用的思想。本文将从一道经典的竞赛题目出发,详解数位dp的思路及相关知识点的用法,非常适合初学者,简单易懂,知识点涵盖全面。

2025-03-02 12:33:32 760 3

原创 【算法竞赛】动态规划·必考(附leetcode100经典练习)

动态规划几乎是所有算法认证和竞赛中必考的一个知识点,将大问题分解成更简单的子问题,对整体问题的最优解决方案取决于子问题的最优解决方案。本文将详细介绍动态规划的知识点和经典例题。

2025-03-01 11:36:44 1060

原创 【算法竞赛】双向广搜及经典应用·常考(附string和哈希表常见用法总结)

我们常常会面临这样一类搜索问题:起点是给出的,终点也是已知的,需要确定能否从起点到达终点,如果可以,需要多少步。如果我们用常规的搜索方法,从起点开始往下搜,那得到的解答树可能非常庞大,这样漫无目的的搜索就像大海捞针。双向广搜的思想就是更换思路: 既然终点是已知的,我们何必让它闲着呢?我们完全可以分别从起点和终点出发,看它们能否相遇。

2025-02-26 15:57:35 585

原创 【算法竞赛】BFS求最短路径(常考)

BFS的特点是逐层扩散,根据它的扩散特点易得可以用来求最短路径问题。最短路径问题是最著名的图论问题,有很多不同的场景和算法。在一种特殊的场景中,BFS也是极为优秀的最短路径算法,这种场景就是所有的相邻两个点的距离相等,一般把这个距离看作1。此时,BFS是最优的最短路径算法,查找一次从起点到终点的最短距离的计算复杂度为O(m),m为图上边的数量,因为需要对每条边做一次检查。关于空间复杂度,用邻接表存储图的复杂度为O(n+m),另外需要使用一个O(n)的队列,n为点的数量。

2025-02-25 11:31:55 808 1

原创 【算法竞赛】二分+单调队列经典应用(附详细思路和图解)

本文将从预备知识到解题思路再到代码详细介绍一道洛谷上经典的二分+单调队列的融合知识点题目,同时还涉及到前缀和等算法竞赛思想和技巧,是一道难度较高,但知识点覆盖较多的题目,作为竞赛练习非常有帮助

2025-02-19 15:44:43 508 1

原创 【算法竞赛】常用单调栈(附详细例题)

单调栈不是一种新的栈结构,它在结构上仍是一个普通的栈,它只是栈的一种使用方法,始终保持栈内的元素是单调的,常用来解决比较问题2.当一个数入栈,和栈顶比较,若比栈顶小,则入栈;比栈顶大,则出栈,直到这个数能入栈为止注意,每个数都一定入栈!单调栈比单调队列简单,栈只有一个出入口(单调队列可见上一篇博客)这样说可能还是有点抽象, 接下来将从例题入手,详细介绍单调栈的使用及应用场景

2025-02-18 16:18:12 479

原创 【洛谷】P1886 滑动窗口 /【模板】单调队列,经典!

一道经典的单调队列模板题!!附详细解释和代码

2025-02-18 10:50:29 391

原创 【算法竞赛】经典链表模拟题·普及(代码附详细注释)

【代码】【洛谷】经典链表模拟题·普及(代码附详细注释)

2025-02-17 15:44:38 425

原创 从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)

本文不仅细化了每一个步骤,实现了从0到1部署Tomcat和添加servlet。还针对IDEA2024版和以前的版本在部署上的区别,做了详细介绍,尤其是add framework support部分。与此同时,针对控制台中文乱码问题,本文也给出了详细解决方案。

2024-11-23 22:15:32 2708 4

原创 优先队列用法详解(c++)

本文详细介绍了优先队列在C++中的使用方式,并附上了详细代码,通俗易懂

2024-11-21 16:17:39 1006 1

原创 n皇后问题分支限界法&回溯法对比(附解题模板)

本文详细介绍了用两种方法解决n皇后问题,分别是分支限界法和回溯法,并进行了对比,均给出了详细的AC代码,以及深度和广度的做题模板,供分享交流

2024-11-19 20:01:22 1040

原创 分支限界法详细介绍(附和回溯法对比)

所谓“分支”就是采用广度优先的策略,依次搜索E-结点的所有分支,也就是所有相邻结点,抛弃不满足约束条件的结点,其余结点加入活结点表。然后从表中选择一个结点作为下一个E-结点,继续搜索。

2024-11-19 11:34:02 901

原创 Leetcode53——最大子数组和(一题多解)

一般看到连续子序列或子数组优先考虑的都是前缀和数组,但是在本题中我们可以采用两个变量来判断。①cursum,用来记录连续子数组截止到目前的和,②maxres,用来记录连续子数组的最大和。以上算法的时间复杂度均为O(n),本题还可以考虑用分治法来做,即它的最大子数组和要么在左半边,要么在右半边,要么是穿过中间,对于左右边的序列,情况也是一样的。分别计算后返回左、右、中三者的最大值即可,用递归不断将大问题化解成小问题,然后分解实现。这时的事件复杂度是O(nlogn),可以自行尝试代码,最后也能通过。

2024-09-26 10:33:10 384 2

原创 穷举法——求回文子串的个数Lintcode1856

此思路采用完全枚举的方法,即将所有子串都列举出来,并自定义一个判断回文的函数,让其判断这些子串是否是回文串。很显然,这种方法到最后超时了,因为随着字符串的长度增加,子串的个数呈很大的增长速度。上述的方法很显然是存在冗余的,比如s="abba",其中"bb"和“abba”的回文判断是独立的,实际上在确定"bb"为回文后,左右两边均为'a',则可以得出“abba”也是回文。于是,我们考虑优化。我们通过找“中心点”的方式来判断回文串。中心点又分为2种情况:①选取1个字母为中心点,②选取2个字母的中间为中心点。

2024-09-22 17:22:32 339

原创 并查集(简单易懂)

通俗易懂的讲解了并查集的原理和应用

2024-09-21 17:26:00 862

原创 前缀和专题(简单易懂)

1、前缀和是一个简单又好用的概念,它实际上采用了一个”记忆化“的思想。2、通常,我们采用数组presum来保留前缀和的结果。presum[i]即nums数组从第0位置到第i位置的累加和。3、前缀和的计算公式:presum[i]=presum[i-1]+nums[i]4、但是为了防止越界,我们通常采用改进的版本。即把presum的长度定义为原数组长度+1。则presum[0]=0,相当于一个占位符。而presum[i]=presum[i-1]+nums[i-1]。(统一向前推进一位)

2024-09-20 20:00:52 292

原创 递归练习2——计算表达式专题(附非递归做法)

递归练习2,同时提供非递归部分

2024-09-19 15:45:39 359

原创 递归专题练习1(附代码解析)

一些常见的递归题型的练习

2024-09-18 11:37:26 779

原创 数学建模——遗传算法(SGA)matlab(1)

主要由三大模块构成:1、编解码2、个体适应度评估3、遗传运算。

2024-07-17 16:58:09 1120 1

原创 数学建模——多目标模型matlab

线性规划只能解决一组线性约束条件下一个目标的max和min问题,但实际决策中通常要考虑多个目标,这些目标有主有次,有定性有定量,有对立有补充,此时就要用到多目标规划。将正负偏差引入目标函数,在用户给定goal的前提下尽量减少偏差(即使得严格的不等式约束尽可能小的被突破),用人话说就是给定约束条件下尽量接近或达到指定的目标值。在优化问题具有多个独立的、相互竞争的目标的情况下找到一组非支配解集合(Pareto最优解)目标规划特有的,约束右端是要追求的目标值,允许发生正负偏差。必须严格满足的等式和不等式的约束。

2024-07-10 22:09:24 1476 1

原创 数学建模——(多层)模糊评价模型matlab

顾名思义,即在模糊综合评价的基础上,将评价问题分解为多个层次,每个层次进行模糊综合评价,然后逐层汇总。R4(工作成绩,由单位考核组成员打分): R4=[0.2,0.6,0.2,0,0]R2(工作能力,由部门领导打分): R2=[0.2,0.5,0.2,0.1,0]R1(政治表现,由群众评议打分): R1=[0.1,0.5,0.4,0,0]R3(工作态度,由部门领导打分): R3=[0.2,0.5,0.3,0,0]V={v1​=优秀,v2​=良好,v3​=一般,v4​=较差,v5​=差}

2024-07-10 18:41:26 1681 1

原创 数学建模——聚类算法matlab

只有两个指标,且做出散点图后发现数据表现得很“DBSCAN”(簇的形状是任意的),这时候再用DBSCAN进行聚类。基于密度的聚类方法,聚类前不用预先指定聚类的个数。可以发现任意形状的簇,可以将密度足够大的相邻区域连接,有效处理异常数据。对未知类别的对象进行分类,可以更加准确的在每个类中单独使用统计模型进行估计、分析或预测;->计算每个样本与当前已有聚类中心的最短距离(值越大,该样本被选为聚类中心的概率越大)->对基因表达数据进行聚类,以发现具有相似表达模式的基因群,以及蛋白质结构分类。

2024-07-09 20:42:06 969 1

原创 评价模型-AHP层次分析法(偏应用)

确认整个决策事件的目标层+准则层(可以有子准则层)+方案层% 计算特征向量和特征值% 找到最大的特征值% 对应的特征向量% 归一化特征向量% 一致性指标 (CI)% 随机一致性指标 (RI)% 当 n

2024-07-05 22:15:43 592

原创 Leetcode面试经典150题P236——二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

2024-05-17 09:28:44 1130

原创 数据结构与算法——二分查找

本文详细介绍了二分的细节实现,这是一种很重要的思想,一定要多加练习,想不清楚时多画图进行实践验证。

2024-05-08 22:14:44 1334 2

原创 Leetcode面经150题P105,P106——根据遍历序列构造二叉树

本文详细介绍了如何通过遍历序列构造一棵二叉树的思想和代码,核心还是离不开递归和树的划分,递归是贯穿整个树的思想,一定要多加练习。

2024-05-07 21:57:16 969 1

原创 数据结构之图的基本概念及应用(超详细)

图是一种非常常用的一类数据结构,但同时它也是最为复杂的,几乎涉及到之前所有学过的数据结构,学习该数据结构不光需要对之前的知识都有所了解,还需要付出大量的时间和耐心。

2024-05-05 15:22:58 1736 2

原创 匿名函数——超详细通俗易懂的解释

匿名函数,又称lambda表达式,是一种在程序中定义、传递和执行函数的灵活方式。通过匿名函数,我们可以不用为函数命名而直接在需要的地方定义和使用函数,极大地提高了代码的简洁性和灵活性。在本篇博客中,我们将深入探讨匿名函数的定义方式、应用场景以及优势匿名函数作为一种简洁而强大的编程手段,可以在各种场景下灵活应用。通过本篇博客的介绍,我们了解了匿名函数的定义方式、应用场景,以及优势所在。希望本篇博客能够帮助读者更好地理解匿名函数,并在实际编程中发挥其作用,提高代码的可读性和效率。

2024-04-27 17:46:39 5956 3

回溯法总结PPT,附详细考点解读和经典例题

求幂集(两种解法),n皇后

2024-11-30

空空如也

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

TA关注的人

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