基础算法
文章平均质量分 56
窗外藏深海
不是一番寒彻骨,怎得梅花扑鼻香
展开
-
蓝桥题解(不定期更新)
蓝桥题解原创 2023-03-08 19:47:53 · 183 阅读 · 0 评论 -
C++交换两个值的三种方法
第一种:利用指针进行交换#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;void swap(int *a, int *b){ int p; p = *a; *a = *b; *b = p;}int main(int argc, c...原创 2019-03-13 16:15:58 · 10649 阅读 · 1 评论 -
CRC-模2除法
在循环冗余校验码(CRC)的计算中有应用到模2除法模2除法的特点就是:每一位除的结果不影响其它位,即不向上一位借位模2除法原则:1、被除数的首位为1,商为1 2、被除数的首位为0,商为0 3、模2除法等同于按位异或,要保证每次除完首位都为0,才能进行右移 ...原创 2019-03-16 12:12:06 · 47637 阅读 · 29 评论 -
PTA|团队程序设计天梯赛-练习集题解(L1)
L1-001Hello World(5 分)这道超级简单的题目没有任何输入。你只需要在一行中输出著名短句“Hello World!”就可以了。输入样例:无输出样例:Hello World!#include<stdio.h>#include<algorithm>#include<memory.h>#include<...原创 2019-03-07 20:04:05 · 12702 阅读 · 1 评论 -
矩阵运算
矩阵快速幂矩阵快速幂矩阵加法只有同型矩阵才能进行加减法(即行数与列数都相同)#include<stdio.h>#include<string>#include<memory.h>#include<iostream>#include<algorithm>#include<math.h>using n...原创 2019-03-07 10:28:17 · 292 阅读 · 0 评论 -
cin与scanf变得一样快的方法
在main函数里加入一句代码ios::sync_with_stdio(false);cin、cout效率低的原因是因为先把要输出的东西放入缓冲区,再输出,才导致效率降低,而这段代码可以来打消iostream的输入、输出缓存,可以节省许多时间,使效率接进scanf和printf的输入输出效率。...原创 2019-03-09 16:27:35 · 911 阅读 · 0 评论 -
快速幂和矩阵快速幂
快速幂快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高假设我们要求a^b,那么其实b是可以拆成二进制的,该二进制数第i位的权为2^(i-1),例如当b==11时,a^11=a^(2^0+2^1+2^3),由于是二进制,很自然地想到用位运算这个强大的工具: & 和 >> ,&运算通常用于二进制取位操作,例如...原创 2018-11-04 13:58:20 · 195 阅读 · 0 评论 -
欧几里得(GCD)和扩展欧几里得
欧几里德算法(辗转相除法)欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。int gcd(int x, int y){ if(y == 0) return x; return gcd(y, x % y);}用最大公约数求最小公倍数printf("...原创 2018-10-29 19:45:34 · 550 阅读 · 0 评论 -
筛法
筛法筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数第一种:Era...原创 2018-10-21 12:24:33 · 1794 阅读 · 0 评论 -
欧拉回路
欧拉回路(Euler circuit)如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径如果一个回路是欧拉路径,则称为欧拉回路具有欧拉回路的图称为欧拉图(简称ë图),具有欧拉路径但不具有欧拉回路的图称为半欧拉图欧拉定理1)欧拉路:通过图中所有边的简单路2)欧拉回路:闭合的欧拉路3)欧拉图:包含欧拉回路的图无向图存在欧拉回路的充要条件一个无向图存在欧拉回...原创 2018-10-20 16:41:50 · 6341 阅读 · 0 评论 -
并查集
并查集并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。主要操作初始化把每个点所在集合初始化为其自身。通常来说,这个步骤在每次...原创 2018-10-18 19:55:13 · 201 阅读 · 0 评论 -
线段树(C++)
线段树线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩。 开原数组4倍大的空间区间查询:询问某段区间的某些性质(极值,求和,etc)...原创 2018-09-15 21:14:08 · 2173 阅读 · 0 评论 -
算法:7种排序(C++)
冒泡排序:时间复杂度:O(n*n) 空间复杂度:O(1) 稳定性:稳定#include<stdio.h>#include<iostream>#include<cstring>#include<algorithm>using namespace std;void Bubble_sort(int a[], int n){ for...原创 2018-09-05 19:33:10 · 418 阅读 · 0 评论 -
C++ 高精度
高精度加法#include<stdio.h>#include<iostream>#include<memory.h>#include<cstring>#include<algorithm>using namespace std;int main(int argc, char const *argv[]){ char...原创 2018-09-05 15:51:07 · 1006 阅读 · 1 评论