- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 判断点与多边形的位置关系
struct point{ double x,y; point() {} point(double x_, double y_) { x = x_; y = y_; } friend point operator - (const point &a,const point &b) { ...
2018-08-30 21:47:24 1139
原创 【Splay】学习笔记
Splay伸展树是一种特殊的BST,Splay能在Log(n)的均摊时间复杂度内完成插入、查找,删除等基本操作。基本结构struct SplayTree{ int val,sz,cnt;//val为值 sz为子树大小,cnt此位置的重叠节点个数 int s[2],f;//s[0]为左儿子 s[1]为右儿子 f为父亲};旋转1.左右儿子判断:如果 当前节点 为 ...
2018-08-29 22:00:40 250
原创 【HDU - 6194】后缀数组+线段树
题意:给出一个只有小写字母的串,求至少出现k次的Substring有多少个。 思路:先求出height数组,然后枚举长度为k的段,查询区间的height(ST表或者线段树),他们的LCP和就是答案,但是这样会算出长度为k+1的和长度为k-1的串,所以要减去这一部分 #include <bits/stdc++.h>using namespace std;#de...
2018-08-29 19:47:11 358
原创 无向图的割点与桥
定义对于无向连通图G=(V,E),Tarjan算法可以在线性时间内求出无向图的割点和桥。割点:对于x∈V,如果删除某个点x,图的联通分量增多(G分裂为两个或者两个以上的子图),则x为割点。桥 :对于e∈E,如果删除e,G分裂成两个不相连的子图,则称e为桥或割边。时间戳(T[i]):DFS的过程中,第一次访问到节点的时间,将N个节点依次标记为1-N。搜索树:按照DFS的...
2018-08-28 21:57:57 754
原创 【可持久化线段树】
线段树 线段树是一种特殊的BST,用节点代表区间,能够在logN时间内解决许多区间相关的问题,如区间最值,区间和,区间修改等。 可持久化 可持久化让我们能够查询数据结构历史版本,并且通过利用之前的历史版本节省空间开销。 可持久化线段树 线段树的每次修改都会至多修改logN个节点,而对于其余的节点并不会产生影响。每次修改的时候只添加logN个节点就成功的保存了历史版...
2018-08-25 21:47:21 547
原创 Treap
Treap是什么Treap是一棵同时满足二叉搜索树和堆性质的树,是平衡二叉搜索树,可以在O( log(n))的期望复杂度内完成各个操作。基本结构Treap的节点中比普通的BST多了一个供堆属性使用的随机权值,保证满足堆性质。struct data{ int l,r,v,size,rnd,w;}tr[100005];基本操作 1.旋转 Treap的旋转比较...
2018-08-12 12:56:43 498
原创 【矩阵树定理 学习笔记】
矩阵树定理的作用?主要用来解决生成树计数问题 准备对于给定的无向图G定义度数矩阵D[G] 满足:当i≠j时,dij=0;当i=j时,dij等于vi的度数。定义邻接矩阵A[G] 满足:当i≠j时,如果节点i和节点j之间存在边,dij=1;当i=j时,dij = 0。定义给定的无向图G的基尔霍夫矩阵C[G] = D[G] - A[G]。 G的生成树的个数 = C[G]...
2018-08-08 11:33:40 390 1
软件工程原书pdf 第三版 钱乐秋
2018-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人