- 博客(10)
- 收藏
- 关注
原创 倍增 ST LCA
的一段区间内的最大值, 则易证 f[i][j] = max(f[i][j - 1], f[i + 2。][j - 1]) , 有点类似二分树(?), 相当于从 [i, i + 2。例如: 给出 n 个数,有 m 次询问,每次输出区间 [x,y] 的最大值。ST 表通过倍增 DP 的方式 O(1) 解决 RMQ 区间最值问题。设 f[i][j] 表示以 i 起始, 长度为 2。- 1] 两个子区间中选出 [i, i + 2。- 1] 和 [i + 2。- 1] 区间的最大值。
2023-08-05 17:02:04
48
1
原创 平衡树()
treap 即 tree + heap , 通过在结点上存放一个随机的索引来避免平衡树在有序输入的最坏情况下变成链表, 而所需的一系列操作则通过类似将树依照某个值 撕开 再 合并 的方式进行。fhq Treap (无旋 treap)
2023-07-31 21:16:32
47
1
原创 树链剖分()
在进行 dfs 的过程中, 优先向重链移动并记录时间戳, 则一条重链上的时间戳必然是连续的, 因此, 通过线段树对连续链区间操作的功能以实现所需的对树操作有了可行性。树链剖分, 就是将树结构剖分成多个不相交的链结构, 再以此结合线段树等对链区间操作的方式以达成对树结构修改的目的, 共有三种。时间戳将一颗树的所有节点进行了连续化, 一个结点子树上的结点的时间戳, 一定大于这个结点自身的时间戳。重儿子: 即一个结点的所有子结点中, 大小 (以它为根节点的子树所拥有的结点个数) 最大的一个。
2023-07-26 19:59:08
48
1
原创 KMP算法 与 字符串哈希
本质上是通过移动待查询子串的相对位置来寻找是否有该子串, 移动的方式则通过Next数组来记录。KMP算法用于在线性时间复杂度内寻找字符串中是否含有某个子串的情况。例如, 寻找s0中s的左端点下标, 若不存在s则输出-1。Next数组中记录的是最大相同前后缀的长度。以及利用KMP算法计算子串数量。
2023-07-22 19:36:47
114
1
原创 博弈论(游戏)
其中 S->S' 表示状态 S 能到达状态 S' , mex 是 minimum excludant 的简称,即第一个未出现的非负整数, 即 S 状态的 SG 值为 (小于此状态所能到达的所有状态的SG值) 的最大值。则可以推知 N-position 状态的SG值必然 >0 , P-position 状态的SG值必然 ==0;对于任何一种可能的状态, 合法的移动集合只取决于这个状态本身, 不取决于何人操作、以前的任何操作、骰子的点数或其他因素。规定了合法的状态转移, 且所有规定对双方一样生效。
2023-07-20 22:00:26
134
原创 最短路径算法
Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。Floyd算法的边权值可正可负,但需要使用。
2023-03-19 12:14:38
25
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人