随笔分类 -  算法学习

用于总结日常学习的算法知识
[动态规划第一节]背包问题汇总
摘要:- ### 背包问题 - 动态规划思路: - #### 状态表示 f(i, j) - 状态由几维表示 - 表示的**集合**是什么 - 所有选法 - 选法条件 - 只考虑前i个物品 - 总体积 > n >> m; for(int i = 1; i > v[i] >> w[i]; //f[1~n][0 阅读全文

posted @ 2023-08-14 17:04 MoiLip 阅读(43) 评论(0) 推荐(0) 编辑

[数论第四节]容斥原理/博弈论/NIM游戏
摘要:- ### 容斥原理 - |ABC|=|A|+|B|+|C||AB||AC||BC|+|ABC| - $|\displaystyle \cup_{i=1}^n A_i |=\sum_{i}|A_i|-\sum_{i,j} 阅读全文

posted @ 2023-08-13 19:01 MoiLip 阅读(69) 评论(0) 推荐(0) 编辑

[数论第三节]高斯消元法/求组合数/卡特兰数
摘要:- ### 高斯消元 - 求解含有n个未知数,n个方程的多元线性方程组 ==O(n^3)== - 初等行变换: - 某行乘以一个非零数 - 交换两行 - 某行加上另一行的若干倍 - 利用初等行变换将方程组化为上三角矩阵 - 解的情况: - 完美阶梯型:唯一解 - 非完美阶梯型: - 0 == 非0: 阅读全文

posted @ 2023-08-10 20:12 MoiLip 阅读(37) 评论(0) 推荐(0) 编辑

[数论第二节]欧拉函数/快速幂/扩展欧几里得算法
摘要:- ### 欧拉函数 - 欧拉函数φ(N) : 1-N中与N互质的数的个数 - 若N=p1a1·p2a2·p3a3····pnan 其中p为N的所有质因子 - 则$\varphi(N) = N(1-\frac{1}{p_1} 阅读全文

posted @ 2023-08-08 17:37 MoiLip 阅读(123) 评论(0) 推荐(0) 编辑

[数论第一节]质数/约数
摘要:- ### 数论 - #### 质数 - 在大于1的整数中,只包含1和本身这两个约数,就被称为质数,也叫素数 - ##### 质数的判定 - ###### 试除法 - 遍历2-n,若有约数则不为质数 O(n) - 优化: - d整除n,则n/d也整除n,约数总是成对出现,只要找较小的约数,即取d 2 阅读全文

posted @ 2023-08-06 17:39 MoiLip 阅读(69) 评论(0) 推荐(0) 编辑

[图论第三节]最小生成树/二分图
摘要:- ### 最小生成树 - #### Prim算法 - 朴素版Prim ==O(n^2)== - 稠密图 - 步骤: - S:表示最小生成树的集合 - 初始化距离 - 找距离集合S最近的节点 - 将节点加入集合S - 用该节点更新非S点到集合S点的距离 - 代码: ```c ++ const int 阅读全文

posted @ 2023-08-05 16:39 MoiLip 阅读(42) 评论(0) 推荐(0) 编辑

[图论第二节]最短路问题汇总
摘要:- ### 最短路 - #### 单源最短路 - 求从一个点到其他所有点的最短距离 - ##### 所有边权是正数 - 朴素Dijkstra算法 ==O(n^2)== - 用于稠密图 m >= n - 步骤: - dist[i]:每个点离起点的距离 - S:已经确定最短距离的点 - V:没有确定最短 阅读全文

posted @ 2023-08-04 19:17 MoiLip 阅读(61) 评论(0) 推荐(0) 编辑

常用c++ STL 汇总
摘要:- ### 常用STL: - #### **vector** - 变长数组,倍增的思想 - 初始化: ```c++ //初始化 vector a; vector a(n); vector a[n]; vector a(n, 0);//长度为n,值为0 ``` - 操作: ```c++ size() 阅读全文

posted @ 2023-08-03 10:34 MoiLip 阅读(58) 评论(0) 推荐(0) 编辑

[图论第一节]图/树的搜索/存储/拓扑排序
摘要:- ### 深度优先搜索 - 一条路走到黑 - 回溯/剪枝 - 每一个dfs都对应一个搜索树 - 解决全排列,搜索所有可能解 - 宽度优先搜索 - 一层一层搜索 - 解决最短路问题 搜索方式| 数据结构| 空间 | 特点 : | : | : | : DFS |stack |O(h) |不具有最短性 阅读全文

posted @ 2023-08-02 19:11 MoiLip 阅读(49) 评论(0) 推荐(0) 编辑

哈希表
摘要:- ### 哈希表 - 作用:将庞大的空间,映射到小的空间,集中数据,一般用取模,取模的数尽量取质数,最大程度减小冲突 - 操作:一 般是添加和查找元素,删除元素通常有一个标记数组,对元素标记为已删除 - 离散化相似,离散化是特殊的哈希方式,离散化处理的数据是单调的,相对位置不变 - 映射会出现冲突 阅读全文

posted @ 2023-07-31 22:48 MoiLip 阅读(34) 评论(0) 推荐(0) 编辑

字典树/并查集/大小根堆
摘要:- ### 字典树(Tire树) - 用来高效存储和查找字符串集合的数据结构 - #### 基本性质: - 根节点不包含字符 - 除根节点外每一个节点都只包含一个字符: - 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串,每个节点的所有子节点包含的字符都不相同 - 有的节点有标记 阅读全文

posted @ 2023-07-29 23:53 MoiLip 阅读(17) 评论(0) 推荐(0) 编辑

链表/栈/队列/KMP
摘要:- ### 链表 - 用数组模拟,不同于结构体加指针 - 调用new关键字开上万级别的节点非常慢,基本会超时 - #### 单链表 - 来构造邻接表 - 用于存图与树 - ##### 基本结构: - head 表示头结点的下标 - e[i] 表示节点i的值 - ne[i] 表示节点i的下一个节点的下 阅读全文

posted @ 2023-07-28 18:48 MoiLip 阅读(20) 评论(0) 推荐(0) 编辑

双指针/位运算/离散化/区间和并
摘要:- ### 双指针 - 两个指针指向两个不同的序列 - 两个指针指向同一个序列(归并排序,快速排序) - 主要作用:将暴力O(n^2)遍历通过两个指针的某种单调性质**优化到O(n)**,也就是说将**内层循环变量j通过与外层循环变量i的关系**,将内层循环次数降低不定次 - #### 模板: `` 阅读全文

posted @ 2023-07-26 22:04 MoiLip 阅读(20) 评论(0) 推荐(0) 编辑

高精度/前缀和/差分
摘要:- ### 高精度 - #### 存储方式: - 整数的长度一般小于1e6 - 大整数的每一位存储到数组里 - 存储时低位在前,高位在后,方便进位 - #### 高精度加法 - 每一位相加Ai + Bi + t, t表示进位取值0/1,逢十进一 - ##### 模板: ```c++ //存储方式 s 阅读全文

posted @ 2023-07-25 20:57 MoiLip 阅读(23) 评论(0) 推荐(0) 编辑

快排/归并/二分
摘要:- ### 排序 - #### 快速排序 - 主要思想:分治 - 排序方式: - 确定分界点:左边界:q[l], 中间值:q[(l+r)/2],右边界,或者随机 - 调整区间:小于等于x的在x左半边,大于等于x的在x右半边(最难的部分) - 法一: - 开a[],b[] - 扫描一遍q[] ,q[i 阅读全文

posted @ 2023-07-24 19:00 MoiLip 阅读(8) 评论(0) 推荐(0) 编辑

二分答案
摘要:- ### 二分答案: - #### 基本要点: - 二分答案就是将暴力找答案的过程变为二分找答案 - 将最优化问题转变为可行性问题 - 二分的答案要求有界性/单调性/二段性 - 主要用于解决最大值最小化/最小值最大化问题 - check函数求y一般用贪心 - #### 基础模板: ```c++ / 阅读全文

posted @ 2023-07-23 15:41 MoiLip 阅读(71) 评论(0) 推荐(0) 编辑

搜索(DFS/BFS)
摘要:### 广度优先搜索(BFS) - #### 基本要点: - 利用队列(先进先出) - 一层一层搜索 - 适合于连通块的搜索 - 任何的BFS都可以转化为对树的广搜 - #### 基本流程: - 选择搜索的起点,起点入队,起点标记为已访问 - 队列非空时,循环出队,每次出队将与出队元素连通的且未访问 阅读全文

posted @ 2023-07-20 20:37 MoiLip 阅读(89) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示