自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深度学习直通车——附录

贡献: 提出了完全基于自注意力机制的Transformer架构,抛弃了循环和卷积,实现了强大的并行计算能力和长距离依赖捕捉能力,彻底改变了NLP领域,并逐渐统一了AI各大领域。,而不是直接学习恒等映射。贡献: 展示了基于Transformer的双向、大规模预训练语言模型的巨大威力,开创了“预训练-微调”的新范式,是NLP发展史上的又一里程碑。贡献: 提出了批归一化(BN),一个简单而强大的技术,通过规范化层输入,显著加速了网络训练,提高了模型的稳定性,也是现代网络的标配。面试时若能提及,会是极大的加分项。

2025-07-07 04:23:22 706

原创 深度学习直通车——第10章:面试核心问题与回答框架

你的目标是向面试官证明,你不仅具备扎实的理论基础(与笔试机试相辅相成),还拥有解决实际问题的能力、快速学习的潜力和良好的沟通协作能力。问题的形式往往是“What -> Why -> How”的逐层深入,这能有效地区分“背题库”和“真理解”的学生。同学,夏令营的竞争是激烈的,但你的准备也是全面的。对于每一个你在项目中用到的,或者在本书中学到的核心技术点,都要用“What-Why-How”的框架来准备。保持谦虚、真诚、自信的态度,清晰地展示你的思考过程,你一定能给面试官留下深刻的印象。解释你为什么这么设计。

2025-07-07 04:14:31 642

原创 深度学习直通车——第9章:机试核心代码填空与编程实战 (NEW & CRITICAL)

在夏令营的角逐中,理论说得再好,最终也要落实到代码上。本章将是你从理论到实践的桥梁,也是你决胜机试的秘密武器。它不要求你从零搭建一个庞大的系统,而是通过“代码填空”或“模块实现”的形式,精准地考察你对深度学习核心概念的掌握程度。同学,请务必将本章的代码模板刻在脑海里。夏令营机试的时间非常宝贵,不允许你现场查阅资料或过多思考基础架构。实现一个简单的多层感知机(MLP),包含两个全连接层和一个ReLU激活函数。知道如何选择和使用损失函数,并编写评估模型性能的代码。的顺序时,你已经开始实现核心的。

2025-07-07 04:13:41 736

原创 深度学习直通车——第8章:高频笔试题与解题策略

我们将聚焦于夏令营笔试中最常见、最关键的四种题型,提供精准的解题策略和高质量的答案范例。请记住,笔试不仅考察你知识的广度,更考察你理解的深度和表达的清晰度。最好的学习方式是,遮住答案,自己尝试对每个问题进行口头或书面回答,然后再进行对比和修正。将这些答题框架内化为你的思维习惯,你将在考场上思如泉涌,下笔有神。这相当于为信息的传递提供了一条“高速公路”,保证了即使网络很深,信息(和梯度)也能顺畅地流动。这类问题考察你对深度学习核心原理的理解和宏观把握,要求你不仅知其然,更知其所以然。,不如让它去学习一个。

2025-07-07 04:11:20 633

原创 深度学习直通车——第7章:前沿热点与应用领域概览 (Cutting-edge Topics)

多模态能力使得AI能够完成更复杂的、跨模态的任务,比如根据一张图片写一首诗,或者根据一段文字描述生成视频,这在以前是无法想象的,极大地拓展了AI的应用场景。在掌握了核心模型和训练技巧后,了解当前最热门的研究方向和应用领域,不仅能拓展你的知识边界,更是夏令营面试中的加分项。生成模型的目标是学习数据的底层分布,并创造出全新的、与真实数据类似的数据。“这个领域的发展非常迅速,其技术基础通常是在大语言模型的基础上,融合了专门处理图像等其他模态的模块(如Vision Transformer, ViT)。

2025-07-07 04:05:54 478

原创 深度学习直通车——第6章:模型优化与训练技巧 (Optimization & Regularization)

但是,朴素的随机梯度下降(SGD)就像一个蒙着眼睛下山的人,步子小了走得慢,步子大了容易“扯着蛋”在山谷间来回震荡,甚至可能卡在某个平坦的区域(鞍点或局部极小值)动弹不得。然而,仅仅“搭建”出一个模型是远远不够的,就像你组装了一辆赛车,但如果不知道如何调校引擎、如何选择轮胎、如何防止车身过重,它依然无法在赛道上取得好成绩。通俗地说,就是用各种方法“限制”模型的学习能力,防止它在训练集上“学得太好”以至于把噪声和 случайные(随机)特征都学了进去,从而导致在测试集上表现不佳(即过拟合)。

2025-07-07 04:04:01 228

原创 深度学习直通车——第5章:Transformer与注意力机制——新时代的霸主 (Chapter 5: Attention & Transformer

也就是说,对于Self-Attention来说,“我爱你”和“你爱我”的初始计算结果是一样的,这显然是不可接受的。就好比一个专家委员会,面对一个复杂问题,每个专家(Head)从自己擅长的角度(子空间)进行分析,并给出一个“关注点”列表(Attention结果),最后将所有专家的意见汇总起来,形成一个更全面、更鲁棒的最终决策。与其进行一次高维度的自注意力计算,不如将Query, Key, Value线性投影到多个低维度的子空间中,在每个子空间里并行地进行注意力计算,最后再将所有“头”的结果拼接起来。

2025-07-07 04:02:34 739

原创 深度学习直通车——第4章:循环神经网络——序列数据的处理利器 (Recurrent Neural Networks)

从Vanilla RNN的“记忆”诞生,到其面临的“短期记忆”瓶颈(梯度消失/爆炸),再到LSTM和GRU通过精巧的门控机制(Gate)成功捕获长期依赖。因此,模型学不到“长期”的依赖关系,只剩下“短期”的记忆。通过这套“遗忘-输入-输出”的门控机制,LSTM能够智能地移除无用信息、添加有用信息,并在需要时将长期记忆输出,从而成功捕获到序列中的长期依赖关系。是一个不断被覆写的“笔记本”。最基础的循环神经网络,我们通常称之为“香草RNN”(Vanilla RNN),它通过一个巧妙的循环结构来引入记忆。

2025-07-07 03:30:03 406

原创 深度学习直通车——第3章:卷积神经网络——计算机视觉的王者 (Convolutional Neural Networks)

欢迎来到CNN的世界!在CNN的末端,通常会将最后一层池化层的输出“压平”(Flatten)成一个长长的一维向量,然后将其送入一个或多个全连接层。这部分与我们熟悉的MLP完全一样,它的作用是综合所有局部提取到的高级特征,进行非线性组合,最终映射到我们想要的输出上(例如,在图像分类任务中,输出一个包含各个类别概率的向量)。在本章中,我们深入探索了CNN的内部机制,从三大核心组件(卷积、池化、全连接)到其辉煌的架构演进史。接下来,我们将进入一个新的领域,学习如何处理序列数据,探索循环神经网络(RNN)的奥秘。

2025-07-07 03:17:09 380

原创 深度学习直通车——第2章:神经网络的基石——从感知机到多层感知机 (The Bedrock of Neural Networks)

一个包含至少一个隐藏层的MLP,只要拥有足够数量的神经元,理论上可以拟合任意复杂的连续函数。想象一下大脑中的一个神经元,它接收来自其他多个神经元的信号,经过处理后,决定自己是否要“兴奋”(激活)并传递信号。本章我们将从最简单的神经元模型——感知机出发,一步步揭开神经网络的面纱,理解它是如何从“浅层”走向“深度”的。这意味着,无论你的网络有多少层,它本质上都只是一个简单的线性模型(等价于一个单层的感知机)。这个问题和上一个关于激活函数的问题本质是相通的,都是考察对梯度下降法在非光滑函数上应用的理解。

2025-07-07 03:13:16 382

原创 深度学习直通车——第1章:数学与机器学习基础回顾 (Foundation Reloaded)

这不仅仅是“复习”,更是从深度学习的视角,重新理解这些工具的意义与威力。夏令营的笔试和面试中,对基础概念的深刻理解,往往是区分普通和优秀候选人的关键。所以,梯度下降就是这样一个简单而强大的方法:通过不断地朝着梯度(最陡峭)的相反方向(下坡)迈出合适的一小步,来逐步找到我们想要的最小值(例如,模型预测误差的最小值)。:到达新位置后,您再次环顾四周,找到新的最陡下坡方向,再迈出一步。:您的目标是走到这座山的最低点,也就是山谷的谷底。但是,因为雾太大了,您完全看不清远处的路,只能看到自己脚下的一小片区域。

2025-07-07 03:04:18 531

原创 机器学习宝典——附录

你的准备已经非常扎实,现在需要的是信心和最终的打磨。相信自己,你在正确的道路上!预祝你在夏令营中披荆斩棘,取得优异的成绩,进入理想的学校深造!反复回顾,确保在任何时候被问到,都能清晰、准确地写出公式、说出术语的含义。本附录旨在帮助你快速对应中英文术语,并理解其核心内涵,这在阅读英文文献、使用开源库以及应对英文面试时至关重要。本附录汇集了各核心算法的“灵魂”公式,是笔试手推、面试考察的重中之重。(Gain(D, A) 是特征 A 对数据集 D 的信息增益,(在线性回归基础上)(在线性回归基础上)

2025-07-07 02:56:01 231

原创 机器学习宝典——第16章:模拟面试与最终检查清单

经过前面十五章的系统学习,你已经构建了坚实的机器学习知识体系。现在,是时候将这些“内力”转化为面试场上的“招式”了。本章将指导你如何进行高效的模拟面试,并提供一份详尽的最终检查清单,确保你在进入“考场”前,状态、知识和材料都达到最佳。祝你沉着应战,发挥出自己的最高水平,在众多申请者中脱颖而出,收获心仪大学的录取通知!自我介绍是你的“第一张名片”,决定了老师对你的第一印象。这个环节不是可有可无的过场,而是你展现科研潜力和主动性的绝佳机会。在夏令营开始前的最后 48 小时,对照此清单,逐一检查,确保万无一失。

2025-07-05 23:40:09 545

原创 机器学习宝典——第15章:项目经验梳理与展示

如果说算法知识是你的“内功”,那么项目经验就是你的“招式”。本章将教你如何将散落的项目经历,打磨成面试官眼中逻辑清晰、亮点突出、细节扎实的“代表作”。STAR 法则是项目介绍的黄金标准,它能帮助你构建一个完整、有条理的故事线,让面试官在短时间内抓住你工作的核心价值。当你能够将以上内容烂熟于心,并能流畅、自信地脱稿讲出时,你在项目介绍这个环节就已经成功了一大半。平铺直叙地讲完项目流程只能让你“合格”,而真正让你“优秀”的,是你如何讲述项目中的亮点。如果你对自己的项目都一知半解,是绝对无法通过考察的。

2025-07-05 23:37:16 465

原创 机器学习宝典——第14章:编程与代码实现(机试核心)

本章是为机试环节量身打造的实战训练场。夏令营机试的特点是:时间紧、任务重,题目通常不会像 LeetCode Hard 那样追求极致的技巧,而是更侧重于考察你是否能。当你能不假思索地写出这些核心模块时,你在机试中就已经成功了一大半。这部分通常考察对神经网络基本结构、训练流程的掌握。地实现机器学习中的核心算法模块、调用API完成数据处理任务,或搭建一个简单的深度学习模型。这部分是考察算法理解深度的“试金石”。题目通常会给出一个类或函数的框架,让你填充核心部分。库快速搭建一个完整的机器学习流水线。

2025-07-05 13:56:51 625

原创 机器学习宝典——第13章:高频面试题解析

如果特征数量巨大,且你相信其中大部分特征是无关的,那么使用 L1 进行特征选择是一个很好的选择。如果特征都比较重要,只是想防止过拟合,让模型更鲁棒,L2 是更常见的选择。此外,当特征维度非常大,样本量也很大,且对训练速度和模型解释性要求较高时,LR 及其变体(如 FTRL)通常是更实用的选择。1. 它对最终决策的概率要求不高,只需要正确类别的后验概率最高即可,特征之间的相关性可能不会改变最终的概率排序。2. 对于分类任务来说,它关注的是决策边界,即使联合概率分布的估计有偏,其生成的决策边界也可能足够好。

2025-07-05 13:21:22 898

原创 机器学习宝典——第12章:偏差、方差与模型选择

本章将带你深入探讨机器学习中最为核心的权衡艺术——偏差与方差,并掌握应对欠拟合与过拟合的策略,最后学习模型选择的黄金标准:交叉验证。理解偏差-方差权衡是机器学习思维的核心,熟练运用欠拟合与过拟合的应对策略是优秀算法工程师的必备技能,而交叉验证则是你进行科学模型评估与选择的“金标准”。,就是在偏差和方差之间找到一个最佳的平衡点,使得总误差(特别是模型在新数据上的误差)最小。欠拟合与过拟合是偏差-方差权衡在模型实际表现中的两种具体体现,是每个机器学习从业者都必须面对和解决的问题。,或在不同的正则化强度。

2025-07-05 13:00:49 637

原创 机器学习宝典——第11章:模型评估

我们希望把所有真正生病的人都找出来,哪怕会误判一些健康的人(FP增加),也不能漏掉任何一个真正的病人(FN要尽可能小)。在夏令营的考核中,清晰地阐述你选择某个评估指标的原因(例如,为什么在这个场景下选择 Recall 而不是 Accuracy),远比仅仅背诵公式更能打动面试官。将模型的预测结果,按照“预测为正/负”和“真实为正/负”两个维度进行划分,统计每个组合下的样本数量。是衡量分类器综合性能的“金标准”,尤其是在评估那些输出概率值的模型(如逻辑回归)时。它衡量的是模型预测的“准不准”。

2025-07-05 12:56:47 576

原创 机器学习宝典——第10章:主流深度学习模型

想象一下,RNN 的隐藏状态更新是“强制性”的,每个时间步的信息都会被无差别地混合和衰减。而 LSTM 和 GRU 则为信息流动设立了几个“阀门”或“开关”(即门),使得网络可以自主地学习如何控制信息的流动。为了预测最后一个词,你不仅需要看到“很”,更需要记住前面的“今天天气”。,可以看作是信息传递的“高速公路”或“传送带”。它的核心在于一个“循环”结构,允许信息在网络的时间步之间传递和留存。GRU 是对 LSTM 的一种简化和变体,它同样能解决长依赖问题,但结构更简单,参数更少,计算效率更高。

2025-07-05 12:46:42 491

原创 机器学习宝典——第9章:神经网络基础

本章将带你从最基本的神经元模型出发,逐步深入到构成现代深度学习模型的基石:多层感知机、激活函数、反向传播算法以及各类优化器。它接收多个输入信号,将它们加权求和,然后通过一个简单的阶跃函数(如果总和超过某个阈值就输出1,否则输出0),做出一个二元决策。正是因为有了它,神经网络才具备了学习和表示复杂非线性函数的能力,从而能够解决现实世界中绝大多数的非线性问题。不同的优化器采用不同的策略来更新参数,旨在更快、更稳定地找到损失函数的最小值。,MLP 获得了拟合复杂非线性关系的能力,从而奠定了现代深度学习的基础。

2025-07-05 12:43:29 685

原创 机器学习宝典——第8章:特征工程 (Feature Engineering)

无论多复杂的模型,如果输入的是一堆“垃圾”特征,产出的也必然是“垃圾”结果。在夏令营的考核中,能否清晰地阐述你对数据预处理、特征选择和构建的思考过程,是区分你和其他竞争者的关键。真实世界的数据往往是“脏”的,充满了缺失、异常和不一致。数据清洗和预处理是建模前必不可少的“净化”步骤,旨在提高数据质量,为后续的特征提取和模型训练打下坚实的基础。从原始特征中筛选出最有效、最相关的子集(特征选择),以及基于现有特征创造出新的、信息量更大的特征(特征创建),以降低模型过拟合风险、提升模型性能和可解释性。

2025-07-05 04:52:36 891

原创 机器学习宝典——第7章:降维 (Dimensionality Reduction)

将特征值从大到小排列,计算每个特征值占总特征值之和的比例(即方差贡献率),然后累加这个比例,直到达到期望值,此时的特征数量就是 k。第二种是“肘部法则”(Elbow Method),画出 k 值与累计方差贡献率的关系曲线,曲线由陡峭变得平缓的“肘部”位置,就是理想的 k 值。在数学实现上,这等价于对原始数据的协方差矩阵进行特征值分解,选取前k个最大特征值对应的特征向量作为新的基,从而实现降维。同样,簇的面积大小也可能被扭曲,一个在高维空间中很稀疏的簇,在 t-SNE 图上也可能被“挤压”成一个紧凑的点团。

2025-07-05 04:43:56 912

原创 机器学习宝典——第6章:聚类算法 (Clustering)

欢迎来到无监督学习的世界。与监督学习不同,这里的我们没有“标准答案”(标签),我们的目标是在数据中发现隐藏的、内在的结构。聚类算法就是实现这一目标的核心工具,它试图将数据集中的样本划分为若干个不相交的子集,我们称之为“簇”(cluster)。它们分别代表了基于划分、基于层次和基于密度的聚类思想,是面试中考察无监督学习知识的绝对重点。DBSCAN 是一种完全不同的聚类方法,它基于密度来发现簇,能够识别任意形状的簇并有效地处理噪声。对于凝聚式层次聚类,算法的关键在于如何定义两个簇之间的“距离”或“相似度”。

2025-07-05 04:41:36 1116

原创 机器学习宝典——第5章:集成学习 (Ensemble Learning)

它的核心思想是“亡羊补牢,精益求精”,它迭代地训练一系列弱学习器,每一个新的学习器都重点关注并试图纠正前面学习器犯下的错误。是 Bagging 思想的一个杰出升级版,它专门使用决策树作为基模型,并在 Bagging 的基础上引入了额外的随机性,使得模型的性能更上一层楼。Bagging 是并行式集成学习的典型代表,它的核心思想在于通过“民主投票”来降低模型的方差,从而提高模型的稳定性和泛化能力。GBDT 是 Boosting 思想的另一个更通用的实现,它将优化的过程看作是梯度下降。

2025-07-05 04:37:11 933

原创 机器学习宝典——第4章:非线性模型 (Non-linear Models)

当需要预测一个新样本的类别时,它会考察在特征空间中离这个新样本最近的 k 个“邻居”(即训练样本),然后根据这 k 个邻居的类别,通过“少数服从多数”的原则来决定新样本的类别。它的核心思想是:对于给定的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。对于一个线性可分的二分类问题,能够将两类样本分开的超平面可能有很多个,但 SVM 试图找到“正中间”的那个,也就是距离两边最近的样本点(即。决策树学习的关键在于如何选择最优的划分特征,使得划分后的子节点“纯度”最高。

2025-07-05 04:34:01 884

原创 机器学习宝典——第3章:线性模型 (Linear Models)

无论技术如何发展,对线性模型的深刻理解都是你未来学习更复杂模型(如深度学习)的坚实基础。通过惩罚这些大的参数,正则化可以引导模型学习到更简单、更平滑的决策边界,从而提高其在未见数据上的泛化能力。这里的“最好地拟合”指的是让所有样本的真实值(标签)和模型预测值之间的差距(误差)总体上最小。是为了在后续求导时,可以与平方项的系数 2 相互抵消,简化计算,对最终结果没有影响。(如线性回归的 MSE 或逻辑回归的 Log Loss)后面加上一个正则化项。是其对应的真实标签。是我们要学习的模型参数(权重)。

2025-07-05 04:29:50 614

原创 机器学习宝典——第2章:数学与工具速览

机器学习本质上是一个应用驱动的领域,但其根基深深地扎在数学的沃土之中。线性代数赋予我们操纵数据的框架,微积分为我们提供了优化的利器,概率论让我们得以在不确定性中进行推理。本章将快速回顾这些核心概念,并介绍将理论付诸实践的编程工具,确保你的地基稳固如山。几乎所有机器学习模型的训练过程,本质上都是一个求解最优化问题的过程。将理论付诸实践,离不开强大的计算工具。在Python的生态中,以下三个库是机器学习从业者的“三剑客”。带着这些“武器”,你现在可以充满信心地进入下一部分,探索监督学习的核心算法了。

2025-07-05 04:24:38 590

原创 机器学习宝典——第1章:机器学习概览

我们将用最凝练的语言,为你描绘出机器学习的全貌,确保你对它的核心思想、工作流程和基本术语有一个清晰、准确的认识。例如,均方误差(Mean Squared Error, MSE)是一个常用的回归损失函数,它计算所有样本的预测价与真实价之差的平方的平均值。这是最关键的第一步。在房价预测中,房子的“面积”、“卧室数量”、“是否临近地铁站”、“楼层”等信息,都是特征。它是监督学习中的“正确答案”,是模型的输出。调整模型的“外部”设置(如学习率、树的深度等,这些不是模型自己学的),找到最佳组合,进一步提升性能。

2025-07-05 04:19:37 574

原创 《C++算法竞赛攻略:从入门到降维打击》——第16章

在算法竞赛和机试中,强大的编码能力是基础,但合理的策略和高效的调试技巧,往往是决定你能否在有限时间内最大化得分的关键。本章将为你传授临场应战的智慧,帮助你从容地处理各种突发状况,将你的知识水平最大程度地转化为分数。希望它们能帮助你在未来的机试和算法竞赛中,沉着冷静,发挥出自己的最佳水平,取得理想的成绩!当你通过了所有样例,但提交后依然WA(Wrong Answer),很可能是你的代码无法处理某些“刁钻”的边界数据。:用一个简单的、确保正确的暴力程序,来验证你的高效、但可能存在逻辑漏洞的程序。

2025-07-03 23:05:35 523

原创 《C++算法竞赛攻略:从入门到降维打击》——第15章

掌握一些基础的数论知识和数学技巧,能让你在面对特定问题时找到突破口,甚至实现降维打击。质数(Prime Number),又称素数,是指在大于1的自然数中,除了1和它自身以外不再有其他因数的自然数。质数是数论的基石,很多算法问题都与之相关。模运算(Modular Arithmetic)在算法竞赛中极为重要,尤其是在处理会超出标准数据类型范围的大数时。在模算术中,除以一个数等于乘以它的逆元。费马小定理是处理模运算,特别是模逆元(Modular Inverse)的利器。的时间复杂度,是目前最高效的质数筛选法。

2025-07-03 23:02:43 786

原创 《C++算法竞赛攻略:从入门到降维打击》——第14章

规定每次只能选相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。名员工,构成一棵树形的上下级关系(根节点是唯一的最高领导)。状压DP,全称“状态压缩动态规划”,是一种利用计算机二进制位运算特性来优化DP的方法。当DP的某一维状态是关于一个集合的子集时,如果这个集合的大小。它通常用于解决一类可以被分解为子区间,并且子区间的解能够合并为父区间解的问题。,那么他的每个直接下属(子节点)既可以邀请,也可以不邀请,我们取两者中的最优情况。好的,这是根据您提供的目录大纲和要求为您撰写的。

2025-07-03 21:20:31 661

原创 《C++算法竞赛攻略:从入门到降维打击》——第13章

它描述了在给定容量的背包和一组具有价值和重量(或体积、成本)的物品时,如何选择物品放入背包以使得总价值最大化。例如,物品A有3件,成本为5,价值为10,那么就等价于我们有物品A1、物品A2、物品A3,它们的成本都是5,价值都是10。0-1背包的“0-1”正体现在每件物品只有两种选择:不放(0)或放(1)。的背包,我们不仅是“放”或“不放”,而是可以“放0件”、“放1件”、“放2件”……这里应该是选择“新物品1”、“新物品2”和“新物品4”的组合,要拿7件,就选择“新物品1”、“新物品2”和“新物品4”(

2025-07-03 20:42:40 776

原创 《C++算法竞赛攻略:从入门到降维打击》——第12章

而动态规划则通过一张“备忘录”(通常是数组),将计算过的子问题的解存储起来,后续再次需要时直接查表获取,避免了重复计算,从而极大地提高了效率。这是动态规划能够成立的基石。它指的是,当我们在计算某个子问题的解(即某个“状态”)时,我们只关心其之前阶段的子问题的结果,而不关心这些结果是如何得到的。这个性质指的是,一个大问题的最优解,可以由其若干个小规模子问题的最优解推导出来。例如,我们想找到从A点到Z点的最短路径,如果B点是这条路径上的一点,那么从A到B的这段路径,也必然是所有从A到B的可能路径中最短的。

2025-07-03 20:30:46 844

原创 《C++算法竞赛攻略:从入门到降维打击》——第11章

字符串哈希(String Hashing)提供了一种绝妙的解决方案:将任意一个字符串通过一个哈希函数映射成一个唯一的、固定长度的整数“指纹”。然而,在算法竞赛中,我们常常会遇到对效率要求极高的字符串问题,例如在百万字符的文章中查找某个单词、快速找到所有以特定前缀开头的字符串、或者判断两个长字符串是否在内容上相等。字符串哈希是解决涉及大量子串比较问题的神器,常与二分查找等算法结合,用于解决如“最长回文子串”、“最长重复子串”等问题。中,最长的、相等的、且不等于自身的“前缀”和“后缀”的长度。

2025-07-03 20:20:30 739

原创 《C++算法竞赛攻略:从入门到降维打击》——第10章

最后,我们将系统学习处理各种最短路问题的强大武器:Dijkstra算法、可以处理负权边的Bellman-Ford和SPFA算法,以及用于求解任意两点间最短路的Floyd-Warshall算法。Bellman-Ford是一种更具普适性的单源最短路算法,它可以处理带负权边的图,并且能够检测出从源点可达的负权环。“安全的边”是指加入后不会与已选择的边构成环的边。问题的利器,例如在处理图的边时,动态地查询任意两点是否连通,或计算图中的连通分量个数。是图的一个子图,它包含了原图的所有顶点,并且边的数量最少(恰好为。

2025-07-03 20:16:04 833

原创 《C++算法竞赛攻略:从入门到降维打击》——第9章

就是从图中的某个顶点出发,系统地访问图中的每一个顶点,且每个顶点仅被访问一次。从这些距离为1的节点出发,新访问到的节点,距离起点都为2,以此类推。:手写栈的实现虽然能避免递归深度问题,但在竞赛中,除非题目特殊卡递归深度,否则递归实现的代码更短、更不易出错,是绝对的主流。想象一下,你站在一个巨大的迷宫入口,你的任务是走遍迷宫的每一个角落。DFS和BFS是图论算法的基石,它们的思想和实现模式将贯穿后续许多更复杂的算法。,它的核心是“不撞南墙不回头”的探索精神,体现了“深入”和“回溯”的思想。

2025-07-03 02:54:24 720

原创 《C++算法竞赛攻略:从入门到降维打击》——第8章

两个指针在整个过程中只会从头到尾各扫描一遍数组,总的移动次数是线性的,从而将时间复杂度优化到。这可以看作一种特殊的“对撞”思想,指针不是迎面走来,而是在两个不同的数组上,共同奔向一个终点。双指针不是一个特定的算法,而是一种通用的编程思想和技巧,是优化暴力枚举的利器。最朴素的方法是,让第一个人(指针。双指针思想的核心在于:通过利用问题的某些内在特性(如单调性),让两个指针。在处理数组或字符串的许多问题中,我们常常会不自觉地写出嵌套循环,形成。对撞指针,顾名思义,是指两个指针分别位于序列的。

2025-07-03 02:46:34 421

原创 《C++算法竞赛攻略:从入门到降维打击》——第7章

他为了回答你,又去问他前面的人,如此循环,直到问到队首的那个人。这个过程就是“递归”,而贯穿其中的数学关系——你的位置 = (你前面那个人的位置) + 1——就是“递推”。是一种数学思想,指的是一个问题的解可以通过一个或多个规模更小的相同问题的解来表示。),然后他把答案告诉后面的人,后面的人再根据这个答案计算出自己的位置,一层层地传回给你。你看,我们将“移动n个盘子”的大问题,转化为了两次“移动n-1个盘子”的子问题。递推是“从已知推未知”的思维模型,而递归是实现这种模型的一种优雅代码形式。

2025-07-03 02:40:46 768

原创 《C++算法竞赛攻略:从入门到降维打击》——第6章

如果我说“太小了”,你就知道答案在51到100之间,瞬间排除了整整一半的数字。当你在一个庞大的、有序的数据海洋中寻找一个特定目标时,线性遍历像是拿着一根鱼竿在太平洋里钓鱼,而二分查找则像是开启了“声纳探测”,每一次都能将搜索范围精确地缩小一半,其效率之高,令人惊叹。通过这个例子,你可以深刻体会到“二分答案”是如何巧妙地将一个复杂的“最优化问题”转化为一系列简单的“可行性判定问题”的。虽然C++ STL提供了强大的二分查找函数,但手写二分依然是必须掌握的基本功,尤其是在“二分答案”这类复杂场景中。

2025-07-03 02:35:09 575

原创 《C++算法竞赛攻略:从入门到降维打击》——第5章

贪心算法的魅力在于它的简洁和高效。相比于需要考虑所有可能性才能下决定的动态规划(DP)或者搜索算法,贪心算法往往只需要一个简单的排序和一次遍历即可。贪心算法好用,但最危险的地方在于它的“看似正确”。很多时候,一个直觉上的贪心策略可能是错误的。因此,学习贪心算法的关键在于理解它的思想,并学会。贪心则更适用于“动态决策”,在过程中不断有新的候选项加入,需要实时维护一个最优集合。也就是说,不从整体最优上加以考虑,它所做出的仅是在某种意义上的局部最优解。下面我们通过三个最经典的例题,来深入理解贪心策略的应用。

2025-07-03 02:28:06 636

空空如也

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

TA关注的人

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