- 博客(40)
- 收藏
- 关注
原创 编译原理入门:从代码到程序的“灵魂翻译”
这篇文章系统性地介绍了编译器的完整工作流程,将其划分为八个关键阶段:预处理、词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成以及最后的汇编链接过程。每个阶段都通过具体示例和形象类比(如"装修工""扫描仪""语法老师"等)进行详细阐释,重点说明了从源代码到可执行程序的转换过程中,编译器如何逐步将高级语言转化为机器能理解的指令。文章特别强调中间代码(IR)的关键作用,解释了优化环节的重要性,并最终通过完整的编译器结构图将整个编译过程可视化
2026-07-02 21:44:24
59
原创 调试与对拍:算法竞赛的“除虫指南”
本文系统介绍了算法竞赛中的调试与对拍技巧。主要内容包括:1. 调试心法:通过提问定位错误类型(逻辑错误/边界错误/数组越界等)2. 静态调试:二分法定位、打印中间变量、检查常见低级错误3. 动态调试:GDB使用指南及替代方案(cout大法、assert断言)4. 对拍技术:构建正解/暴力/数据生成器三件套,编写自动化测试脚本5. 常见WA类型分析:溢出、数组越界、精度等问题的排查方法6. 效率提升技巧:预编译宏、cerr输出、调试助手宏等建议选手建立系统化调试思维,结合自动化对拍工具,将调试时间从"
2026-07-02 20:40:26
454
原创 C++设计模式:让代码从“能跑”到“好维护”
本文摘要:设计模式是软件开发中的经验总结,能提升代码的可维护性和可扩展性。文章重点讲解五大常用模式:单例模式(全局唯一实例)、工厂模式(集中管理对象创建)、观察者模式(一对多事件通知)、策略模式(动态切换算法)和装饰器模式(动态扩展功能)。每种模式均通过C++示例代码和实际应用场景说明其实现方式及优缺点。设计模式学习需经历模仿、识别和应用三个阶段,合理运用可降低代码耦合度,提高团队协作效率。
2026-07-02 20:28:55
281
原创 树形DP进阶:让动态规划在树上“生根发芽”
本文深入讲解了树形动态规划(DP)的两个进阶方向:树上背包和换根DP。树上背包通过在树上做分组背包来解决依赖性问题(如选课问题),而换根DP则通过两次DFS高效计算以每个节点为根时的最优解。文章从基础模型出发,结合经典例题和代码框架,详细阐述了状态设计、转移方程和复杂度分析。最后总结了树形DP的三个层次:基础递推、树上背包和换根DP,强调理解分组本质和两次扫描的关键作用。掌握这些方法能有效解决树结构上的复杂优化问题。
2026-06-30 23:09:59
175
原创 路径规划:让机器人从A到B的“智慧选择”
路径规划是机器人学、自动驾驶和游戏AI中的核心问题,分为基于搜索和基于采样两类算法。基于搜索的算法(如Dijkstra和A*)适合结构化环境,其中Dijkstra保证最优但效率低,A通过启发式函数提高效率。基于采样的算法(如RRT和RRT)适合高维复杂环境,RRT快速但不保证最优,RRT通过优化逐步逼近最优路径。实际应用中,自动驾驶结合全局(A)和局部(RRT*)规划,游戏AI常用A*,高维机器人运动则依赖RRT系列算法。选择算法需权衡环境复杂度、最优性要求和计算效率。
2026-06-30 23:09:14
256
原创 数据结构期末复习笔记:从“迷雾”到“清晰”的完整地图
堆 =完全二叉树堆序性最大堆:父结点 ≥ 子结点最小堆:父结点 ≤ 子结点树边数 = N - 1完全二叉树前 h 层结点数 = 2h−12h−1堆建堆 O(N)O(N),插入/删除 O(logN)O(logN)并查集S[x] < 0 是根,负数表示规模Union 先 Find图邻接表 DFS/BFS = O(V+E)O(V+E)邻接矩阵 DFS/BFS = O(V2)O(V2)无权 BFS → Dijkstra → FloydMSTPrim 稠密图,Kruskal 稀疏图。
2026-06-28 00:36:10
267
原创 C++11 新特性完全指南:从入门到精通
特性autodecltype作用根据初始化值推导变量类型查询表达式的类型顶层 const忽略保留引用剥离保留必须初始化是否典型场景简化变量声明模板返回类型推导C++98 中,左值(Lvalue)是可以取地址的表达式,右值(Rvalue)是不能取地址的临时值。泛左值(glvalue)= 左值(Lvalue)+ 将亡值(xvalue)右值(Rvalue)= 纯右值(prvalue)+ 将亡值(xvalue)纯右值(prvalue):字面量、表达式求值结果、传值返回的函数调用等:42;
2026-06-25 15:40:14
797
原创 KMP与AC自动机:让字符串匹配“跳着走”
next[i](或称pi[i])表示模式串p[0...i-1]的最长公共真前后缀的长度。换句话说,它是p的前i个字符组成的子串中,既是前缀又是后缀的最长长度(且长度小于i例如(约定)("a" 没有真前后缀)("ab" 没有)("aba" 的前缀 "a" = 后缀 "a")("abab" 的前缀 "ab" = 后缀 "ab")("ababa" 的前缀 "aba" = 后缀 "aba")在 KMP 中,next[j]表示失配后模式串应该跳到的位置。在 AC 自动机中,fail 指针fail[u]指向。
2026-06-25 15:21:01
314
原创 算法竞赛入门算法串讲:构建你的“解题工具箱”
本文为入门算法的大纲式串讲,旨在为初学者构建知识框架。各模块内含代码片段、典型例题、复杂度分析和常见变形,并附有“决策指南”帮助你快速识别题目类型。建议配合专题刷题使用。
2026-06-21 00:42:22
1187
原创 仙人掌-圆方树学习笔记
本文介绍了仙人掌图的定义及圆方树在解决相关问题中的应用。仙人掌图是一种无向连通图,其每条边最多属于一个环。圆方树通过将原图转换为树结构(圆点对应原节点,方点对应点双连通分量),便于利用树的性质处理问题。文章详细讲解了圆方树的构建方法(基于Tarjan算法)、性质及5个典型例题的解决思路,包括静态仙人掌最短路查询、必经点统计、三元组计数、直径计算和路径最小值查询。圆方树能有效简化仙人掌图问题的处理,尤其适用于涉及环结构的图论问题。
2026-06-08 13:14:51
1063
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅