随笔分类 - 刷题总结
摘要:记录 9:21 2024-3-10 ST算法其实就是利用倍增的思想去划分区间 利用ST算法求RMQ问题(区间最值问题) \(F[i,j] = max(F[i, j - 1], F[i +
阅读全文
摘要:记录 10:07 2024-3-4 目录1.前缀和1.一维前缀和2.二维前缀和 1.前缀和 1.一维前缀和 数组A[x] (下标从1开始) 前缀和S[0] = 0 S[i] = S[i - 1] + A[i] 2.二维前缀和 数组A[x][y] (下标从1开始) 前缀和S[i][j]表示以(i,j)
阅读全文
摘要:记录 14:29 2024-3-4 目录1.离散化 1.离散化 如果数据范围太大,但是数据个数并不是很多,可以离散化后,保留了数据的大小关系 问题的范围虽然定义在集合,但是只涉及其中的有限数值,并且与数值的绝对大小无关(只把这些数值作为代表,或只与他们的相对顺序有关) 点击查看代码 void dis
阅读全文
摘要:记录 21:16 2024-3-3 目录1. 二叉树1.二叉查找树(BST)2.Treap3.平衡二叉树(AVL)4.红黑树(red black tree) 1. 二叉树 1.二叉查找树(BST) 先把自己当时学的时候写的放上来 reference:《数据结构与算法分析》 点击查看代码 #defin
阅读全文
摘要:记录 18:16 2024-2-5 目录1.KMP 1.KMP 先把我之前学时候的笔记拉过来 数据结构学习第二十三天 串的模式匹配(KMP算法) 给定一段文本,从中找出某个指定的关键字 目标 给定一段文本: 给定一个模式:$ pattern=p
阅读全文
摘要:记录 1:30 2024-2-7 1. Trie Trie就是一个边上值为字符的树,我看起来觉得像自动机(应该是吧,读入字符转入不同的阶段) (对我来说需要强调的地方是 数组真是有用的结构,之前看过的代码中使用的结构都比较繁琐点(例如15445project0那个),毕竟是项目数据结构写明确点比较好
阅读全文
摘要:记录 23:39 2024-2-5 manacher算法,是可以在O(n)时间计算回文串的算法 具体思路可以查看Manacher 非常有意思的算法。利用了俩个数组d1[i] 和 d2[i] 分别来记录以位置 i 为中心的长度为奇数和长度为偶数的回文串个数 这里利用了回文串个数也即以i为中心的最长回文
阅读全文
摘要:记录 23:40 2024-2-5 1. 字符串hash 将字符串转换为hash值。以p=131/13331,将字符串看成P进制数,取一固定值M,求出该P进制数对M的余数,作为该字符的hash值。 可以取M = 用 unsigned long long存储这个hash值,这样不
阅读全文
摘要:记录 18:22 2024-2-1 目录1.最小生成树1.Prim2.Kruskal 1.最小生成树 1.Prim 类似dijkstra,优化可以用最小堆来维护权值最小边 点击查看代码 const int INF = 0x3f3f3f3f; int cost[MAX_V][MAX_V]; // co
阅读全文
摘要:记录 17:30 2024-2-4 目录1.树状数组1.区间增加 + 单点查询2.区间增加 + 区间查询例题 1.树状数组 树状数组(Binary Indexed Tree)可以完成以下操作 查询前缀和 增加单个元素a[i]的值 lowbit运算 lowbit(n) 定义为 非负整数n在二进制表示下
阅读全文
摘要:记录 15:48 2024-2-4 目录1.线段树1. 区间增加 + 区间查询2. 延迟标记3. 扫描线4.动态开点与线段树合并例题 1.线段树 线段树是处理区间用的数据结构,最经典的例子是RMQ(Range Minimum Query),查询某个区间上的最大值 这里init/update是从叶子节
阅读全文
摘要:记录 21:04 2024-2-3 目录1.并查集题目记录 1.并查集 用来快速元素是否属于同一组的数据结构 利用路径压缩和按秩合并防止结构退化 点击查看代码 #define MAX_N 10000 int par[MAX_N]; int rank[MAX_N]; void init(int n)
阅读全文
摘要:记录 1:34 2024-2-1 目录1.动态规划相关知识1.LCS和LIS和数字三角形1.LCS2.LIS3.数字三角形2.背包问题1. 0-1背包2. 完全背包3. 多重背包4. 分组背包3. 区间DP4. 树形DP1. 背包类树形DP2. 二次扫描与换根法5.环形与后效性1.环形结构上的动态规
阅读全文
摘要:记录 22:22 2024-1-31 目录1.最短路相关知识1.单源最短路1.DijkstraO(n^2)O(mlogn)2.Bellman-Ford判断是否存在负圈3.SPFA2.多源最短路1.Floyd-Warshall传递闭包问题题目记录 1.最短路 相关知识 Dijkstra:处理没有负边的
阅读全文