算法
糖炒栗之
这个作者很懒,什么都没留下…
展开
-
欧拉函数
目录一、定义二、性质四、代码 一、定义欧拉函数,符号记作φ(n),其值为小于n且与n互质的数的个数。是积性函数,满足gcd(a,b)=1,φ(a*b)=φ(a)*φ(b)。参考:http://www.cnblogs.com/Mychael/p/8759124.html 二、性质①若n是质数:φ(n)=n−1②若n=p^k:φ(n)=(p−1)∗p^(...原创 2019-01-23 22:06:04 · 736 阅读 · 0 评论 -
最短路径总结
目录一、Dijkstra算法(单源无负权)二、Floyd-Warshall算法(多源有负权)三、SPFA算法(单源有负权)一、Dijkstra算法(单源无负权)分享:https://www.cnblogs.com/GnibChen/p/8875247.html【问题】又称迪杰斯特拉算法,是一个经典的最短路径算法,主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止,...原创 2018-09-09 15:09:17 · 657 阅读 · 0 评论 -
卡特兰数
转自:https://blog.csdn.net/wu_tongtong/article/details/78161211目录一、计算公式二、一般性质三、卡特兰数的实际应用四、典型应用卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 74...原创 2018-09-08 20:32:22 · 218 阅读 · 0 评论 -
取模运算的性质
目录 一、基本性质二、运算规则三、重要定理四、除法取余一、基本性质 若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7) (a % p)=(b % p)意味a≡b (% p) 对称性:a≡b (% p)等价于b≡a (% p) 传递性:若a≡b (% p)且b≡c (% p) ,则a≡c (% ...原创 2018-09-08 20:09:31 · 1501 阅读 · 4 评论 -
并查集总结
目录一、并查集二、带权并查集一、并查集每当学习一个新算法,真的不得不感叹算法真的……博大精深!!先分享一篇大佬的博客晚上再来补文,讲的太有意思了,一看就能明白,要是每个算法都有人这么有趣生动地给我讲就好了。https://blog.csdn.net/u013546077/article/details/64509038简单来说并查集就是用来判断连通性滴,核心代码如下。...原创 2018-09-11 18:38:25 · 131 阅读 · 0 评论 -
二叉树(三)之AVL树
转自:http://www.cnblogs.com/skywang12345/p/3576969.html目录一、AVL树的概念二、AVL树的实现三、测试代码一、AVL树的概念AVL树即平衡二叉查找树,顾名思义它既符合二叉查找树的定义,也符合平衡二叉树的定义,AVL树中任何节点的两个子树的高度最大差别为1,且左子树的节点比根节点小,右子树的节点比根节点大。AVL树的查找...原创 2019-03-01 19:54:11 · 335 阅读 · 0 评论 -
二叉树(二)之二叉查找树
目录 一、二叉查找树的概念二、二叉查找树的实现三、代码转自:https://blog.csdn.net/haofight/article/details/54381804一、二叉查找树的概念二叉查找树(Binary Search Tree),又被称为二叉搜索树。它是特殊的二叉树:对于二叉树,假设x为二叉树中的任意一个结点,x节点包含关键字key,节点x的key值记为...原创 2018-09-08 19:37:22 · 320 阅读 · 0 评论 -
排序总结
目录一、冒泡排序二、插入排序三、快速排序四、归并排序五、堆排序今天来整理一下之前学的排序qaq感觉一直都用sort()都忘得差不多了……简单排序:冒泡排序、选择排序、插入排序高级排序:快速排序、归并排序、希尔排序 一、冒泡排序这个大概是我程序入门第一个接触的算法了……当时还觉得搞不清楚好难,真是Naive还有更难的等着我呀。【基本思想】1、比...原创 2018-08-27 19:08:20 · 224 阅读 · 0 评论 -
母函数
最近因为期末了就没怎么做题了qwq感觉好生疏呀但是因为后天就要校赛啦,还是得做做题练个手。然后一做就发现不会辽,痛苦...这里先丢个模板,和大佬博客,以后自己再慢慢整理吧。 https://blog.csdn.net/yu121380/article/details/79914529#comments 普通母函数:#include <iostream> ...原创 2018-12-20 20:12:12 · 304 阅读 · 0 评论 -
次小生成树
丢两个模板...都是建立在最小生成树的基础上。如果对最小生成树还不是很了解的话,可以戳这里https://blog.csdn.net/qq_39826163/article/details/81660819。目录一、Prim算法(复杂度n^2+e)二、Kruskal算法(复杂度N^2log(N+M) + N*M)一、Prim算法(复杂度n^2+e)算法过程:先求最小生成...原创 2018-12-05 21:31:40 · 276 阅读 · 0 评论 -
凸包算法(Graham扫描法)
目录一、概念二、算法步骤三、代码实现转自:https://www.cnblogs.com/aiguona/p/7232243.html一、概念凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,...Xn)的线性组合来构造.在二维欧几里得空...原创 2018-11-08 15:00:25 · 15162 阅读 · 2 评论 -
三分搜索
目录一、概念二、算法过程三、代码转自:https://blog.csdn.net/u011787119/article/details/44598871https://www.cnblogs.com/ECJTUACM-873284962/p/6536414.html一、概念在二分查找的基础上,在右区间(或左区间)再进行一次二分,这样的查找算法称为三分查找,也就是三分法。...原创 2018-11-07 18:57:24 · 342 阅读 · 0 评论 -
反素数
目录 一、定义二、性质三、常见问题一、定义反素数:对于任何正整数,其约数个数记为,例如,如果某个正整数满足:对任意的正整数,都有,那么称为反素数。 二、性质(1)一个反素数的所有质因子必然是从2开始的连续若干个质数,因为反素数是保证约数个数为的这个数尽量小(2)同样的道理,如果,那么必有 三、常见问题(1)给定一个数,求一个最小的正整数,使得的约...原创 2018-10-18 12:37:05 · 131 阅读 · 0 评论 -
贪心算法经典应用
1.选择不相交区间问题【问题】给定n个开区间(ai,bi),选择尽量多个区间,使得这些区间辆两没有公共点。【解题思路】首先,按照结束时间b1<=b2<=..<=bn的顺序排序,依次考虑各个活动,如果没有和已经选择的活动冲突,就选;否则就不选。 2.区间选点问题【问题】给定n个闭区间[ai,bi],在数轴上选尽量少的点,使得每个区间内都至少有一个点(...原创 2018-09-21 19:34:58 · 533 阅读 · 0 评论 -
Trie字典树
目录一、概述二、基本操作三、代码实现一、概述1.基本概念字典树,又称为单词查找树,Tire数,是一种树形结构,它是一种哈希树的变种。2.基本性质根节点不包含字符,除根节点外的每一个子节点都包含一个字符 从根节点到某一节点。路径上经过的字符连接起来,就是该节点对应的字符串 每个节点的所有子节点包含的字符都不相同二、基本操作1.初始化一棵空Tri...原创 2018-09-26 15:24:21 · 197 阅读 · 0 评论 -
莫比乌斯反演
分享:https://www.cnblogs.com/peng-ym/p/8647856.html目录一、莫比乌斯函数1、定义2、性质3、代码实现二、莫比乌斯反演 一、莫比乌斯函数1、定义1.莫比乌斯函数μ(d)的定义是:2.当d=1时,μ(d)=1;3.当且pi为互异素数时,,说直白点,就是d分解质因数后,没有幂次大于平方的质因子,此时函数值根据分...原创 2018-08-08 19:25:39 · 372 阅读 · 0 评论 -
KMP字符串匹配算法
转自:https://www.cnblogs.com/c-cloud/p/3224788.html目录一、KMP算法原理(时间复杂度:O(n))二、next数组的求解三、完整代码 一、KMP算法原理(时间复杂度:O(n))KMP算法用来处理字符串匹配问题,也就是给你两个字符串,你需要回答:B串是否是A串的子串。比如字符串A=“’BBC ABCDAB ABCDABCDAB...原创 2018-08-13 10:34:29 · 183 阅读 · 0 评论 -
容斥定理+鸽巢原理
目录一、容斥定理二、鸽巢原理(抽屉原理) 一、容斥定理【原理】容斥原理是一种重要的组合数学方法,可以让你求解任意大小的集合,或者计算复合事件的概率。要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的部分,再加回所有三个集合相交的部分,再减去所有四个集合相交的部分,依此类推,一直计算到所有集合相交的部分。【公式】即奇...原创 2018-08-08 12:56:58 · 573 阅读 · 0 评论 -
Java大整数类
今天又遇到一题大整数类qaq本来想拖一拖的...看来不得不整理了【整理】转自:https://blog.csdn.net/qq_33406883/article/details/52316866import java.util.*;import java.math.*;public class Main{ public static void main(String ar...原创 2018-07-30 18:37:30 · 252 阅读 · 0 评论 -
二叉树(一)之基本概念
目录一、二叉树的基本概念二、二叉树的存储结构三、二叉树的建立与遍历一、二叉树的基本概念深度:对于任意结点ni,ni的深度为从根到ni的唯一路径的长,根的深度为0。高度:ni的高是从ni到一片树叶的最长路径的长。所有树叶的高为0,树的高=根的高。内部路径长:一棵树的所有结点的深度和。 性质1:二叉树第i层上的结点数目最多为2i-1(i>=1)性质2:深...原创 2018-08-15 09:11:40 · 286 阅读 · 0 评论 -
C++ STL容器使用总结
今天第一次接触到STL,觉得实在太厉害了,但是东西好多我怕我记不住,还是总结一下。以后关于STL的东西都会陆续总结在这里,不过大多都是我从别的大佬那里看到的,我目前用到过的然后整理到一起。 目录一、顺序容器1、vector2、list二、关联容器1、set2、map三、容器适配器1、stack2、queue3、priority_queue ...原创 2018-07-29 20:00:17 · 502 阅读 · 0 评论 -
斐波那契数列
斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...目录一、通项公式二、特性三、应用一、通项公式1、递推公式:F(n)=F(n-1)+F(n-2)2、通项公式: 二、特性1、平方与前后项从第二项开始,每个奇数项的平方都比前后两项之积少1,每个偶数项的平方都比前后两项之积多1。如:第二项1的平...原创 2018-08-12 09:42:14 · 3328 阅读 · 0 评论 -
单调队列
单调队列顾名思义就是一个有规律的队列,这个队列的规律是:所有在队列里的数都必须按递增(或递减)的顺序列队,一般是用来维护最大值或最小值的。 例:给定一个n个数的数列,从左至右输出每个长度为m的数列段内的最大数。 【分析】单调递减队列是这么一个队列,它的头元素一直是队列当中的最大值,而且队列中的值是按照递减的顺序排列的。我们可以从队列的末尾插入一个元素,可以从队列的两端删除元素。...原创 2018-08-06 18:35:32 · 189 阅读 · 0 评论 -
最小生成树
目录 一、定义二、普里姆算法—Prim算法(适合稠密图)三、克鲁斯卡算法—Kruskal算法(适合稀疏图)一、定义给定一个无向图,如果他的某个子图中,任意两个顶点都能互相连通并且是一棵树,那么这棵树就叫做生成树,如果边上有权值,那么使得边权和最小的生成树叫做最小生成树。实际问题:我们要在n个城市中建立一个通信网络,则连通这n个城市需要布置n-1一条通信线路,这个时候我们...原创 2018-08-14 10:53:54 · 9859 阅读 · 1 评论 -
线段树
本文转自:https://www.cnblogs.com/TheRoadToTheGold/p/6254255.html目录一、基本概念二、线段树的基础操作1、建树2、单点查询(即查询一个点的状态,设待查询点为x)3、单点修改(即更改某一个点的状态,对第x个数加上y)4、区间查询(即查询一段区间的状态)5、区间修改(即修改一段连续区间的值,给区间[a,b]的每个数都...转载 2018-08-05 22:24:10 · 15021 阅读 · 15 评论 -
筛素数
目录一、一般筛素数(埃拉托斯特尼筛法)二、线性筛素数(欧拉筛法) 一、一般筛素数(埃拉托斯特尼筛法)此筛选法的时间复杂度是O(nloglogn)int vis[maxn];memset(vis,1,sizeof(vis));void isprime(){ int prime[maxn],cnt=0; for(int i=2;i<=sqrt(N);i+...原创 2018-08-03 22:28:43 · 1854 阅读 · 1 评论 -
背包问题总结
目录一、01背包二、完全背包三、多重背包四、分组背包《背包九讲》:https://wenku.baidu.com/view/cf9f0f8ecc22bcd126ff0c73.html史上最易懂的01背包,完全背包,多重背包讲解:https://blog.csdn.net/qq_34374664/article/details/52230368 一、01背包【问题...原创 2018-08-14 09:18:54 · 443 阅读 · 0 评论 -
树状数组
数据结构是个好东西…我希望我能学的会脑子也是个好东西…我希望我有目录一、概念二、原理1、lowbit()函数2、单点修改和区间查询3、区间修改和单点查询4、区间修改和区间查询三、特点 一、概念树状数组或者二叉索引树也称作Binary Indexed Tree,又叫做Fenwick树;它的查询和修改的时间复杂度都是log(n),空间复杂度则为O(n),...原创 2018-07-30 10:38:24 · 175 阅读 · 0 评论