C++
amostgt
这个作者很懒,什么都没留下…
展开
-
并查集入门 | 图解
并查集入门简介并查集(Disjoint Set)是多个树状结构的集,一个数组内一般有多个树,每个树都是不相交的,它可处理一些不相交的问题。举例,假设A同学和B同学是朋友,C同学和D同学也是朋友,现在B同学和C同学也是朋友啦,那么通过B同学和C同学的介绍,A、B、C、D四位同学都是朋友了。现在A、B、C、D就是一个集合啦,而并查集的作用就是将A、B与C、D两个集合的合并。原理定义一个数组: int s[N] //存放集开始时,每个元素都是一个独立的集,则分别初始化成i,如下图所示:原创 2020-10-13 21:03:25 · 593 阅读 · 1 评论 -
模板|快速幂(位运算)
一般来说,求幂累乘,时间复杂是O(n),快速幂则是快速求幂,时间复杂度是O(log2n)。快速幂做到如此高的效率,示意如图所示:由图中的式子可知:朴素求幂是逐步相乘,b越大则步数越长;而快速幂是b越大,则省的步数越多,步数与b的二进制位数相等。快速幂的代码如下:typedef long long ll;//快速幂 ll fastPow(ll a,ll b){ ll res=1; ll...原创 2020-02-09 14:49:58 · 181 阅读 · 0 评论 -
快排的基础概念和优化
快排的基础概念和优化快排的基础概念:选用一个基本值key,将比key小的放入左边,比key大的放入右边,不断重复,最终得到有序数列。快排是一个比较高效的排序方法,时间复杂度是 n*log2n 。快排是有一定的不稳定性,当数列倒序、相同元素较多时,快排比较其它排序方法没有更优越性快排的实现过程(如图所示):基本快排的实现:代码如下:void quickSort(int *a,i...原创 2020-02-02 19:14:24 · 454 阅读 · 0 评论