摘要: 次小生成树 导入:次小生成树是在最小生成树的基础上求得的,是noip提高组常考点之一, 有着较高的灵活性。 算法简介: 学习次小生成树之前你得先弄明白最小生成树,假设有一n个点m条边的无向 图,求次小生成树基本步骤如下: 1.求出最小生成树,并将所有树边建树。 2.依次枚举非树边,并将其加入树上,形 阅读全文
posted @ 2021-10-06 15:05 君与 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 导入:如果只对一个整数进行素性测试,通常O(√n )的算法就足够了。 但如果要对许多整数进行素性测试,则有更为高效的算法,其中就包括了 Eratosthenes筛法,简称埃氏筛法。它是一个与辗转相除法一样古老的算法, 可以用于枚举n以内的素数。 算法分解: 首先,我们将2到n范围内的所有整数写下来。 阅读全文
posted @ 2021-10-06 07:28 君与 阅读(434) 评论(0) 推荐(0) 编辑
摘要: 导入: 在OI比赛中我们常常面临数据类型选择的难题,浮点型大家都会选择double,一般不会爆范围所 以大家也没有什么顾虑,但整型就不一样了,大家习惯了int本人就因为没有开long long无缘省队,在 OI界总是流传这么一句话“一场比赛不开long long,十年OI两行泪”可见数据类型选择的重 阅读全文
posted @ 2021-08-27 08:39 君与 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 定义:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的 所有n 个结点,并且有保持图连通的最少的边。常用kruskal算法或prim算法求解。 kruskal算法: 前置知识:并查集判环,优先队列。 算法流程: 1.以每个点为元素建立并查集。 2.将所有边以边长为主元插入优先队 阅读全文
posted @ 2021-08-25 16:53 君与 阅读(128) 评论(1) 推荐(0) 编辑
摘要: 扩展欧几里得(求解方程 ax+by=gcd(a,b)) 1>当 b=0时:ax+by=a 故而 x=1,y=0 2>当 b≠0时:因为gcd(a,b)=gcd(b,a%b) 而 bx′+(a%b)y′=gcd(b,a%b) bx′+(a−⌊a/b⌋∗b)y′=gcd(b,a%b) ay′+b(x′− 阅读全文
posted @ 2021-08-23 17:30 君与 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 欧几里得算法: gcd(x,y)=gcd(y,x%y); 边界条件:if(y==0)return x; 证明: 我们设gcd(a,b)=d····(1),a=k*b+c····(2),再令a=k1*d,b=k2*d····(3) 由(2)得c=a-k*b····(4),然后将(1)带入(4)得到:c 阅读全文
posted @ 2021-08-23 17:28 君与 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 基础算法: 贪心: 定义:在进行问题求解的时候,不从整体考虑结果,只考虑当前最优, 得到的是在某种意义上的局部最优解。 适用条件:整体最优一定满足局部最优,并且不依赖后面要做出的选择。 递推: 定义:优当前状态或已知的几个状态求出下一个或之后的某个状态。 适用条件:状态之间存在明显状态转移方程。 递 阅读全文
posted @ 2021-08-23 17:16 君与 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 导入 概念: 1>线段树的结构: 线段树是一种二叉搜索树。 2>用途: 1.在线维护修改以及查询区间上的最值,求和。 2.扩充到二维线段树(矩阵树)和三维线段树(空间树)。 3>时间复杂度: 对于一维线段树来说,每次更新以及查询的时间复杂度为O(logN)。 线段树 基本内容 对于A[1:6] = 阅读全文
posted @ 2021-08-23 17:13 君与 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 基数排序 导入:在常见oi比赛中o(n log n ) 的复杂度的排序(快速排序,归并排序,堆排序)已经够各位看官使用但你是否思考过有没有更优的排序算法呢,想必你一定会说桶排序o(n)的时间复杂度确实让其他算法无法比拟可o(m) 的空间一旦m>10^7该算法就只能尴尬离场了,那么真的没有更优的算法可 阅读全文
posted @ 2021-08-21 17:08 君与 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 大佬博客,我也不会 阅读全文
posted @ 2021-07-18 11:12 君与 阅读(14) 评论(0) 推荐(0) 编辑