
算法竞赛基础篇
文章平均质量分 91
一些基础算法的C++实现,里面有很多模板,这些模板都很精简,但是越精简的代码越难理解。
这里告诫大家也告诫自己,不要背模板,不理解一定要查资料看视频看明白。
有时候慢就是快!!!!!!!!!!!!!!
萌新有疑问
在读大一新生,梦想进入名企,gitee个人主页https://gitee.com/han205602
展开
-
从删库到跑路:我的算法救赎之路 Day5
本专栏主要为了巩固,会把比赛中觉得比较好的题目拿过来整理一下。本周专题dfs。对于搜索算法,个人通过这几天的做题感悟:在写代码之前一定要想清楚要搜什么,是搜不同的排列还是搜前面所做的答案等等 ,dfs利用的是递归,它的代码很简洁,递归的决策树一定要画清楚,回溯不但可以通过在递归主体里面回,也可以在参数里面回溯,有些时候对变量的决策是突变性的,导致回溯的时候不好回,这时候可以考虑换种枚举策略。搜素是对暴力枚举的的代码优化;当枚举能画成一棵树时用搜索;原创 2025-03-30 15:25:59 · 740 阅读 · 0 评论 -
多源最短路:Floyd算法の暴力美学
这里我们求环的长度的时候加了三次,是有可能溢出的,根据C++的语法规则,溢出后变成负数,此时结果就被更新成负数,题目中m的范围是5×103,其实我们可以把INF定义为1e8就可以。5. 初始化:由于我们要做min操作,所以开始时要把所有的状态初始化成INF,从i 到 i 的最短路是零,所有还要把 f[i][i] 初始化成零(i从1 到 n)。题目要求A1 A2 A3 --- An,让我们求最小的危险指数,从任意一点到另一点可以经过别的点,所以本题求得任意两点之间的最小危险指数,其实就是求最短路之和。原创 2025-03-26 17:14:58 · 612 阅读 · 1 评论 -
从删库到跑路:我的算法救赎之路 Day4
本专栏主要为了巩固,会把比赛中觉得比较好的题目拿过来整理一下。今天整理昨天落下的F题(其实是补一下KMP算法),以及牛客周赛的D题。原创 2025-03-24 20:28:30 · 421 阅读 · 2 评论 -
从删库到跑路:我的算法救赎之路 Day2
如果。原创 2025-03-18 20:23:01 · 370 阅读 · 0 评论 -
区间操作の神の双手:从入门到入坟的前缀和差分指南
今天咱们要聊的是算法界的"孪生兄弟"——前缀和与差分。这俩货简直就是处理数组问题的"瑞士军刀",一个负责扮猪吃老虎,一个擅长暗度陈仓。准备好瓜子饮料,咱们这就开车!原创 2025-03-17 22:23:00 · 818 阅读 · 0 评论 -
告别无脑遍历!二分查找の降维打击:让100万数据搜索只需眨眼20次
🌟 你用过微信"跳一跳"吗?每次按住屏幕的时间决定了小人的跳跃距离,有没有发现高手总能精准落在目标点?这背后藏着程序员的秘密武器——今天让我们来揭开这个让搜索效率提升10000倍的魔法!原创 2025-03-16 17:10:10 · 923 阅读 · 3 评论 -
从删库到跑路:我的算法救赎之路 Day1
本专栏主要为了巩固基础算法,会把比赛中觉得比较好的题目拿过来整理一下。原创 2025-03-16 00:03:34 · 1062 阅读 · 2 评论 -
并查集:萌新也能看懂的连通性管理神器
并查集(Disjoint Set Union, DSU),作为高阶的数据结构,专门解决。原创 2025-03-14 17:16:12 · 594 阅读 · 0 评论 -
并查集习题精讲:从基础到高阶应用
回顾:并查集分为简单并查集、扩展域并查集、带权并查集三种,第一种一般用于解决单元关系问题,后两种可以解决多关系问题。下面是上篇博客的题单。原创 2025-03-15 13:40:42 · 877 阅读 · 0 评论 -
算法竞赛基础之树的基本概念
•树是一种非线性数据结构,由节点和边组成,用于表示层次结构。•有一个特殊结点,叫做根节点,它没有前驱和后继•除根结点外,其余结点被分成 个互不相交的集合 ,其中每⼀个集合 ⼜是⼀棵树,称这棵树为根节点的⼦树。所以我们可以看出树是递归定义的,所以后续的很多关于树的算法题也是递归解决的。1.2 树的基本用语•结点的度:树中一个结点的孩子个数称为该结点的度。•树的度:树中最大的结点的度叫做树的度。•树的高度(深度):树中结点的最大层数叫做树的高度。•。原创 2025-01-13 16:51:45 · 1128 阅读 · 0 评论 -
二分和离散化
为什么把二分和离散化放一起:因为离散化其实是一种二分整数的过程。相信大家都接触过二分查找(折半查找),这就是二分的思想。二分通过每次舍弃一半并不存在答案的区间,进而快速锁定要求的答案(二分一定有解,但解不一定就是答案,后面会说)原创 2024-12-28 23:04:50 · 1118 阅读 · 0 评论 -
快速排序与归并排序
我们拿过递归的定义来感受一下这两个排序算法。递归是一种在数学与计算机科学中常用的算法,它指的是一个过程或函数在其定义中直接或间接地调用自身。递归的定义直接递归:一个函数直接调用自己。间接递归:一个函数通过其他函数间接调用自己。尾递归:递归函数在调用自身后直接传回其值,不对其再加运算。递归的应用场景递归通常用于解决可以被分解为更小、更相似子问题的问题,这些问题的解决方案可以重复应用到这些子问题上。原创 2024-12-19 20:53:37 · 634 阅读 · 1 评论 -
动态规划之背包问题
题目描述:有一个容量为m的背包,还有n个物品,他们的重量分别为w1、w2、w3.....wn,他们的价值分别为v1、v2、v3......vn。求可以放进背包物品的最大价值。输入样例:10 42 13 34 57 9输出样例:12解:符号描述:i表示第i个物品,背包容量为j,dp[i][j]表示从下标为0到i,背包容量为j时任意选取物品所得价值的最大值。所以背包问题和函数的递归很像,只不过函数递归时从结果去接近边界,而背包问题是从边界出发,从小问题逐步去接近最终所要求的最优解。原创 2024-11-26 23:23:44 · 1452 阅读 · 0 评论