- 博客(7)
- 收藏
- 关注
原创 ACM - 数据结构 | 极大团/最大团/最大独立集
极大团/最大团/最大独立集简书:https://www.jianshu.com/p/437bd6936dadBron-Kerbosch Algorithm(Version 1)//some-P集合 none-X集合 all-R集合int some[maxn][maxn], none[maxn][maxn], all[maxn][maxn], mp[maxn][manx];int ans;...
2020-03-22 15:34:31
454
1
原创 ACM - 数据结构 | 后缀数组
后缀数组定义suff(i)suff(i)suff(i) 从第 iii 个字符开始的后缀sa[i]sa[i]sa[i] 保存排名为 iii 的后缀的首字符下标rk[i]rk[i]rk[i] suff(i)suff(i)suff(i) 的排名LCP(i,j)LCP(i,j)LCP(i,j) suff(sa[i])suff(sa[i])suff(sa[i]) 和 s...
2020-03-22 15:30:22
229
原创 ACM - 数论 | 二次同余方程(质数模)
二次同余方程形如 X2≡nX^2≡nX2≡n (mod(mod(mod p)p)p) ( ppp 为质数)形式的方程称之为质数模的二次同余方程 。下面将详细阐述二次同余方程是否有解的判定,并且给出解的形式,和代码求解。定理补充费马小定理对于一个质数 ppp 和一个数 aaa ( aaa 不为 ppp 的倍数)有$a^p-1$...
2019-08-16 03:24:10
1139
原创 ACM -算法 | 堆优化Dijkstra算法
Dijkstra算法对于一个边权为正的图,我们可以利用Dijkstra算法求出单源最短路径(SSSP),对于常规的Dijkstra算法,其复杂度为 O(n2)O(n^2)O(n2) ,显然在 nnn 较大的时候,可能导致耗时过长,通过优化我们可以获得一种更加快速的Dijkstra算法,时间复杂度为 O(mlogn)O(mlogn)O(mlogn) 。本篇博客的代码源于**《算法竞赛入门经典(第2...
2019-07-30 21:18:35
423
1
原创 ACM - 算法 | 快速幂
快速幂顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。快速幂的思想假设一个情况,我们要求 511 的具体值。利用常规思路,即为5∗5∗5∗5∗5∗5∗5∗5∗5∗5∗5=488281255*5*5*5*5*5*5*5*5*5*5=48 828 1255∗5∗5∗5∗5∗5∗5∗5∗5∗5∗5=48828125这样的操作...
2019-07-25 11:12:29
325
原创 ACM - 算法 | ST算法处理RMQ问题
RMQRMQ (Range Minimum/MaximumQuery)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。构建笛卡尔树可以解决RMQ问题,同时利用ST(倍增)算法构造dp二维数组,也可以完成RMQ问题的查询。代码思路定义: dp[i][j]表示数组ar...
2019-07-20 00:48:26
211
原创 ACM - 数据结构丨笛卡尔树
笛卡尔树笛卡尔树的性质无相同元素的数列构造出的笛卡尔树具有下列性质:1.结点一一对应于数列元素。即数列中的每个元素都对应于树中某个唯一结点,树结点也对应于数列中的某个唯一元素。2.中序遍历(in-order traverse)笛卡尔树即可得到原数列。3.树结构存在堆序性质,即任意树结点所对应数值大/小于其左、右子树内任意结点对应数值构造思路对于一个没有相同元素的数组构造代码i...
2019-07-19 23:59:54
642
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人