上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 21 下一页

2020年12月8日

摘要: 正常求a^b的方法是迭代,但是效率太低,时间复杂度为O(n) 所以就有了快速幂的诞生 快速幂的基本思想是二进制。将指数用化为二进制表示,那么就只剩下logb + 1位,然后如果能够在小于O(logn)的时间复杂度内建立出一张2^0~2^(log b +1)的表的话,就能在O(log n)的时间复杂度 阅读全文
posted @ 2020-12-08 14:54 greenofyu 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1) 互质指的就是gcd(a,b)=1。 所以对于某个数n,求他的欧拉函数可以直接用暴力。 1 int gcd(int a,int b){ 2 return b==0?a:gcd(b,a%b); 3 } 4 int 阅读全文
posted @ 2020-12-08 12:05 greenofyu 阅读(152) 评论(0) 推荐(0) 编辑

2020年12月3日

摘要: 1、试除法求约数 朴素想法是直接枚举1-n,如果n%i==0,i就是约数 但是考虑到约数是成对出现的,假设i是n的约数,那么n/i也是n的约数,所以只需要枚举到sqrt(n)即可 时间复杂度为:sqrt(n),需要证明排序的复杂度小于求约数的复杂度 排序复杂度是nlogn,那么我们就得知道n有多少个 阅读全文
posted @ 2020-12-03 17:56 greenofyu 阅读(358) 评论(0) 推荐(0) 编辑

2020年12月2日

摘要: 质数定义:只有1和本身两个约数的数称为质数(或素数) 1、试除法判断质数 根据定义,对于某个数n,枚举2-n-1,看是否能够整除,以此判断是否为质数 但是因为因子是成对出现的,所以只需要枚举到<=sqrt(n)即可 1 //时间复杂度sqrt(n) 2 #include<iostream> 3 us 阅读全文
posted @ 2020-12-02 22:08 greenofyu 阅读(285) 评论(0) 推荐(0) 编辑

2020年11月24日

摘要: 二分图的最大匹配的意思就是给定一个二分图,找出最多的边,使得一个点不会同时在两条边的端点上。 举个例子就是,有一堆男生和一堆女生,每个男生和某些女生相互之间有一定的好感度,我们作为月老,秉持宁拆一座庙,不毁一桩婚的原则,希望最后的配对数目最多。 而匈牙利算法就是解决这样一个问题的算法。 匈牙利算法的 阅读全文
posted @ 2020-11-24 14:19 greenofyu 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 二分图的定义是可以把一个图的点分成两个集合,使得集合内部没有边 可以证明如果一个图可以被2染色,那么它就是一个二分图 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 const int N=1e5+10,M=2*N; 阅读全文
posted @ 2020-11-24 14:08 greenofyu 阅读(145) 评论(0) 推荐(0) 编辑

2020年11月23日

摘要: kruskal算法的时间复杂度瓶颈在排序上 1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int n,m; 5 const int N=1e5+10,M=2e5+10,INF=0x3f3f3f3f; 6 str 阅读全文
posted @ 2020-11-23 16:47 greenofyu 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 思路类似于dijkstra,只不过松弛的时候略微不同,松弛成到已经确定的任一点的最短距离,而dijkstra则是松弛为到起点的最短距离 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 const int N=510, 阅读全文
posted @ 2020-11-23 16:45 greenofyu 阅读(104) 评论(0) 推荐(0) 编辑

2020年11月19日

摘要: bellman-ford判负环,据bellman-ford的性质最后得出的是通过不超过n-1条边的从起点到其他点的最短距离(因为n个点,所以n-1条边) 但是如果在n-1次循环之后仍然存在边可以被松弛,那么就存在负环(因为如果没有负环n-1次就已经确定了最短距离,具体可参考bellman-ford证 阅读全文
posted @ 2020-11-19 14:13 greenofyu 阅读(193) 评论(0) 推荐(0) 编辑
摘要: floyd是用来解决多源最短路的 其核心思想是动态规划,d[ k , i , j ] 表示以不超过k的点为中间点从 i 到 j 的最短距离 d[k , i , j ]=min(d[k-1 , i , j ] ,d[k-1 , i ,k ]+d[k-1, k , j ]); 为了保证k的状态都是从k- 阅读全文
posted @ 2020-11-19 09:04 greenofyu 阅读(88) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 21 下一页