随笔分类 -  刷题总结

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

点击右上角即可分享
微信分享提示