摘要: 1、最大公因数,最小公倍数 用辗转相除法 int gcd(int a,int b) { if (b==0) return a; else return gcd(b,a%b); } 而最小公倍数=(a*b)/gcd(a,b) 2、快速幂 快速幂顾名思义,就是快速算某个数的多少次幂。其时间复杂度为 O( 阅读全文
posted @ 2020-03-10 19:19 赵学霖 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 高精度运算,是指参与运算的数(加数,减数,因子……)范围大大超出了标准数据类型(整型,实型)能表示的范围的运算。例如,求两个20000位的数的和。这时,就要用到高精度算法了。 1、高精度加法 #include<cstdio> #include<iostream> #include<cstring> 阅读全文
posted @ 2020-03-10 19:09 赵学霖 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 动态规划(Dynamic Programming)是是运筹学的一个分支,是求解决策过程最优化的数学方法。 动态规划被用于解决多阶段最优化决策问题。它的基本思路是将待解决的问题划分成多个阶段,每个阶段可能存在多种不同的状态。如果划分阶段后的问题满足最优子结构,则可以用动态规划算法一个阶段一个阶段,一个 阅读全文
posted @ 2020-03-03 18:21 赵学霖 阅读(362) 评论(0) 推荐(0) 编辑
摘要: STL常见函数 讲课主播:刘孟良 1、swap 交换函数很常见不用多说 2、sort 快速排序 sort(a,a+n,cmp) 3、reverse 反转函数 reverse(a,a+n) 4、min max 通俗点选小选大,很常见 5、gcd 辗转相除求最大公约数 gcd(a,b) int gcd( 阅读全文
posted @ 2020-02-27 20:40 赵学霖 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 搜索算法是OI中常用的一种算法,除了OI以外,在工程开发中,搜索算法的应用也十分广泛,如果你尝试自己写一些需要处理的数据量不是很大的工程,你可能会发现你用到的算法只有搜索和模拟 搜索也是在考试中得分的一种重要手段,我没统计过在一场考试中平均有多少分是搜索拿到的,不过毫无疑问的是大家一定都通过搜索拿过 阅读全文
posted @ 2020-02-23 20:39 赵学霖 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 5、快速排序 基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,达到序列有序。 时间复杂度O(nlogn) 但是不稳定的排序。 #include<algorithm> bool cmp(int a,int b) 阅读全文
posted @ 2020-02-23 20:32 赵学霖 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 1、选择排序 选择排序的思想是:不断将最小数放在最前直到排完 时间复杂度O(n^2) #include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int MAXN=10001;int main(){ i 阅读全文
posted @ 2020-02-23 20:17 赵学霖 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 贪心算法是指在对问题求解时,总是做出在当前看来是最优的决策 换言之,就是不从全局最优方面考虑,只考虑局部最优情况 贪心算法有时可以得到全局的最优解,这取决于贪心的策略 1.排队接水问题: 有N个小朋友来接水,每个人接水要用ai的时间,求最小的等待总时间。等待总时间是指所有小朋友的等待时间之和 显然这 阅读全文
posted @ 2020-02-17 21:47 赵学霖 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 模拟和枚举 模拟:顾名思义,模拟就是我们去用代码实现某种操作,他怎么说你就怎么做,他要求你做什么你就做什么。 模拟是竞赛中最基础的一项基本功,对思想难度要求不高,主要考察选手的语法和代码能力 1.水仙花数 输出所有的"水仙花数". 所谓"水仙花数"是指这样的一个三位数:其各位数字的立方和等于该数本身 阅读全文
posted @ 2020-02-17 21:32 赵学霖 阅读(307) 评论(0) 推荐(0) 编辑