10 2022 档案

摘要:STL vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() begin()/end() [] 支持比较运算,按字典序 pair<int, int> first 阅读全文
posted @ 2022-10-18 16:35 ShibuyaKanon 阅读(33) 评论(0) 推荐(0) 编辑
摘要:哈希表 存储结构 开放寻址法 拉链法 作用 将一个 -10^9^~10^9^的数 通过 x mod 10^5^ 映射到 [0,10^5^] mod 的数一般要取成一个质数 如果发生冲突,(将两个不一样的数,映射成了同样的数) 例子 840. 模拟散列表 - AcWing题库 维护一个集合,支持如下几 阅读全文
posted @ 2022-10-17 17:55 ShibuyaKanon 阅读(42) 评论(0) 推荐(0) 编辑
摘要:堆 如何手写一个堆? 插入一个数 heap[++size] = x;up(x); 求集合当中的最小值 heap[1] 删除最小值 heap[1] = heap[size];size--;down(1); 删除任意一个元素 heap[k] = heap[size];size--;down(k) or 阅读全文
posted @ 2022-10-16 11:11 ShibuyaKanon 阅读(32) 评论(0) 推荐(0) 编辑
摘要:FUCKING CRAZY! 食物链太难了 并查集 快速地处理 将两个集合合并 询问两个元素是否在一个集合当中 比如 belong[x] 存储的是 x 属于哪一个集合,比如 belong[x] = a 代表 元素 x 属于 集合 a 那么我们就可以用 O(1) 来判断 元素 x 和 y 是否在同一个 阅读全文
posted @ 2022-10-15 20:30 ShibuyaKanon 阅读(33) 评论(0) 推荐(0) 编辑
摘要:Trie 基本用法&作用 快速地存储和查找字符串集合的数据结构 我们在使用 trie 的过程中,我们使用的字符串一定是 都是 大写/小写,并且长度不长 比分说我们有字符串: abcdef abdef aced bcdf cdaa bcdc bcff 首先 trie 树有一个根节点 root 我们现在 阅读全文
posted @ 2022-10-14 17:46 ShibuyaKanon 阅读(33) 评论(0) 推荐(0) 编辑
摘要:KMP 原理 失败了退一步,再尝试 假设我们有一个字符串 暴力枚举法 假设 S[N] 是原串,P[M] 是模式串 for(int i = 1;i <= n;i++) { bool flag = true; for(int j = 1;j <= m;j++) { if(s[i]!=p[j]) { fl 阅读全文
posted @ 2022-10-13 17:19 ShibuyaKanon 阅读(20) 评论(0) 推荐(0) 编辑
摘要:单调队列 经典应用:滑动窗口里的最大值/最小值 举例 假设有序列: 1 3 -1 -3 5 3 6 7 第一次滑动窗口是 【1 3 -1】最小值是 -1 第二次滑动窗口是 【3 -1 -3】最小值是 -3 以此类推最后一次滑动窗口是 【3 6 7】 最小值是 3 我们用队列来维护这个窗口,保证队列中 阅读全文
posted @ 2022-10-11 16:46 ShibuyaKanon 阅读(15) 评论(0) 推荐(0) 编辑
摘要:队列 原理 先进先出,可以理解为一个双头的筒,每次也只有两个操作,从后面塞入一个东西和从前面拿出一个东西 模板 // hh 表示队头,tt表示队尾 int q[N], hh = 0, tt = -1; // 向队尾插入一个数 q[ ++ tt] = x; // 从队头弹出一个数 hh ++ ; // 阅读全文
posted @ 2022-10-10 16:39 ShibuyaKanon 阅读(48) 评论(0) 推荐(0) 编辑
摘要:栈 原理 先进后出,可以理解成一个单口的罐子,每次只有两个操作,放进去和拿出来最上面的一个 模板 // tt表示栈顶 int stk[N], tt = 0; // 向栈顶插入一个数 stk[ ++ tt] = x; // 从栈顶弹出一个数 tt -- ; // 栈顶的值 stk[tt]; // 判断 阅读全文
posted @ 2022-10-07 18:18 ShibuyaKanon 阅读(19) 评论(0) 推荐(0) 编辑
摘要:双链表 原理 用来优化某些问题 有两个指针,一个指向前,一个指向后 一个 e[N] 数组存储值 l[N] 代表他左边是什么 r[N] 代表他右边是谁 模板 // e[]表示节点的值,l[]表示节点的左指针,r[]表示节点的右指针,idx表示当前用到了哪个节点 int e[N], l[N], r[N] 阅读全文
posted @ 2022-10-06 16:59 ShibuyaKanon 阅读(24) 评论(0) 推荐(0) 编辑
摘要:单链表 为什么要用数组模拟链表? 快! 用的最多是 邻接表(实际上是 n 个链表)--> 用来存储 图 和 树 单链表初始状态: head-> 空结点 插入数据后: head -> node1 -> node2 -> node3 -> null 每个 node 都有一个 value 和 一个 nex 阅读全文
posted @ 2022-10-03 16:03 ShibuyaKanon 阅读(17) 评论(0) 推荐(0) 编辑

阅读目录(Content)

此页目录为空

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