- 博客(6)
- 收藏
- 关注
原创 水塘抽样【算法杂例】【C++实现】
水塘抽样(Reservoir Sampling)是一种随机算法,用于从集合S中随机并等概率抽取k个元素(|S|可以是未知的,这尤其适用于不能把所有元素一次性加载到内存的情况)。
2024-05-06 22:03:42
337
1
原创 串匹配【C++ 实现】
前缀是从头部开始、不包含串尾字符的所有连续子串后缀是从尾部开始、不包含串首字符的所有连续子串最大相同前后缀就是所有前缀和后缀中,相等的且最长的对于str="abcabc"所有前缀:"a"、"ab"、"abc"、"abca"、"abcab"所有后缀:"c"、"bc"、"abc"、"cabc"、"bcabc"最大相同前后缀:"abc"
2024-04-02 14:28:57
2176
1
原创 拓扑排序 【C++实现】
由某个集合上的一个偏序得到该集合上的一个全序,这个过程称为拓扑排序根据广义定义,考虑到无向图顶点的前驱(或后继)关系不是偏序(不满足反对称性),故只能对有向图进行拓扑排序,且仅对有向无环图DAG进行拓扑排序,才能得到完整的拓扑序列对有向图进行拓扑排序,使得对于图中任意一条弧,在拓扑序列中都有顶点u是顶点v的前驱(或顶点v是顶点u的后继)反自反性:所有顶点不存在自回路,即所有顶点的前驱(或后继)都不是自身反对称性:无环使得不会同时有,a是b的前驱(或后继)、b是a的前驱(或后继)
2024-03-28 17:57:44
1240
1
原创 堆【C++实现】
当arr[i]=arr[2*i+1], i∈[1,n/2] 时,称之为大顶堆若在输出堆顶元素之后,使得剩余n-1个元素的序列又重建称一个堆,则可以得到序列中的次小(大)值。如此反复执行,便能得到一个有序序列,这个过程称为堆排序。
2024-03-27 17:40:33
790
原创 线段树【C++实现】
线段树是一种基于分治的数据结构,用来进行快速的区间查询、单点修改操作;线段树中每个结点都用于存储一段区间相关的信息(如区间和、区间最值等);
2024-03-15 15:10:34
438
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人