算法篇
文章平均质量分 88
系统学习算法,记录学习笔记。
指针不指南吗
本科大三蒟蒻,有个算法大神梦
展开
-
常用算法汇总
自己能用到的算法汇总,不断更新原创 2024-05-07 22:18:09 · 1356 阅读 · 9 评论 -
【算法】经典背包问题
acwing 背包问题——学习笔记:01背包、完全背包、多重背包、分组背包原创 2023-05-16 15:29:57 · 2547 阅读 · 5 评论 -
【算法】什么是离散化
离散化,本质上是一种哈希,它在保持原序列大小关系的前提下把其映射成正整数。它可以有效的降低时间复杂度。离散化可以改进一个低效的算法,甚至实现根本不可能实现的算法。原创 2023-05-06 10:34:39 · 1380 阅读 · 2 评论 -
【算法】刷题中的位运算
简单介绍一下位运算概念,更多的是写位运算在刷题过程中的应用。原创 2023-05-03 17:24:00 · 1175 阅读 · 5 评论 -
【算法】常用的基础数论
常用的基础数论:最大公约数和最小公倍数、高效判断素数、找质因子原创 2023-03-28 21:57:30 · 1400 阅读 · 3 评论 -
【算法】最短路问题超详细
最短路问题,针对不同情况,分别介绍以下五种算法:朴素Dijkstra算法、堆优化版的Dijkstra算法、Bellman-Ford算法、SPFA算法和Floyd算法原创 2023-03-18 17:54:48 · 611 阅读 · 0 评论 -
【算法】图的存储和遍历
一般来说,树和图有两种存储方式,树是无环连通图,树是特殊的图,这里只讲图。图分成两种有向图和无向图无向图:有向图建两条边,a->b , b->a所以说,无向图是一种特殊的有向图 , 我们只讲 有向图的存储原创 2023-03-08 12:43:19 · 1751 阅读 · 5 评论 -
【算法】DFS与BFS
- 每一个DFS都对应一个搜索树;- DFS俗称暴搜,其中有顺序的,经常用到DFS;- 回溯的时候一定要恢复现场;- 剪枝就是判断出来当前的方案不合法,不再继续往下深搜,直接回溯;只说知识,有点抽象,根据两个题来理解一下。原创 2023-03-04 22:19:11 · 1176 阅读 · 8 评论 -
【算法】Tire字符串
1.1什么是TrieTrie是用来快速高效查找和查找==字符串==集合的数据结构。## 1.2字符串条件全是大写,全是小写,0或者1,数字> 为什么不能是汉字呢?>> 因为我们需要把字符串的每个字符映射到每个数组里面去存储,比如全是小写英文的我们需要数组大小为26,那如果是汉字的话,要开个几万的数组,有点麻烦困难,所以字符串都是上述几种情况。## 1.3如何存储字符串具体过程如下(图是借用acwing佬的)> 用树来存储字符串;>> 根节点为0,这里省略根节点;>>原创 2023-03-01 15:21:54 · 737 阅读 · 2 评论 -
【算法】哈希表
哈希表(Hash table),是根据键(Key)直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据==映射==到表中一个位置来访问记录,这样就加快了查找速度。这个映射函数称做散列函数(哈希函数),存放记录的==数组==称做散列表。- 就是把一堆庞大数据==映射==到一个小的数据结构中,比如把0~$10^9$ 映射到0~$10^5$ 的数组中。 `h(x)`一般用`x mod n`,n表示数组大小,一般取一个质数,这样冲突出现的概率比较小。- 冲突:当两原创 2023-02-26 22:12:49 · 1706 阅读 · 5 评论 -
【算法】并查集
并查集 1. 将两个集合合并 2. 询问两个元素是否在一个集合当中- 基本原理 每个集合用一棵树来表示。 树根的编号就是整个集合的编号。 每个节点存储它的父节点,p[x]表示x的父节点。- 相关问题 1. 如何判断树根:`if(p[x]==x)` 2. 如何求x的集合编号:`while(p[x]!=x) x=p[x]` 3. 判断两个元素是否在一个集合里面,即两个元素的编号相同:`find(p[x])==find(p[y])` 4. 如何合并原创 2023-02-24 11:37:44 · 1051 阅读 · 3 评论 -
【算法】双指针
双指针分类常见问题分类(1) 对于一个序列,用两个指针维护一段区间, 比如快速排序。(2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作。(这种情况比较多)2.双指针思想//朴素算法 for(int i=0;i原创 2023-02-19 18:04:39 · 997 阅读 · 4 评论 -
【算法】二分
主要写了二分思想、通用模板、例题、浮点数二分和STL中的二分函数原创 2023-02-16 03:24:01 · 269 阅读 · 0 评论 -
【算法】差分
与前缀和是反函数原数组a构造数组ba1=b1;a2=b1+b2;构造一个b数组使得,他的前缀和是 a;则b就是a的差分。原创 2023-02-15 08:30:00 · 674 阅读 · 2 评论 -
【算法】前缀和
前缀和实际就是数组前 i 项和2.怎么求前缀和?结合定义,解释的很清楚,前 i 项相加即可思路:第 i 个前缀和就 = 前一个前缀和 + 第 i 个元素但是注意!!!==循环开始从1开始==,s0=0;原创 2023-02-14 04:00:54 · 545 阅读 · 2 评论 -
【算法】高精度
高精度即很大很大的数,超过了 long long 的范围,不能直接读取进行运算,需要用 string 读入,然后存储在数组中去。 高精度算法即把每一位上的数单独拿出来,分别计算,再跟每一位之间的关系,再研究,最后结果仍然存在数组中并输出。原创 2023-02-13 08:00:00 · 888 阅读 · 11 评论 -
【算法】快排和归并排序
快排与归并排序快排是先处理两边,再递归归并是先递归,在处理两边原创 2023-02-10 16:57:14 · 1078 阅读 · 13 评论