- 博客(9)
- 收藏
- 关注
原创 数论-最大公约数和最小公倍数
简谈最大公约数和最小公倍数a,b的最大公约数用gcd(a, b)表示a,b的最小公倍数用lcm(a, b)表示最大公约数辗转相除法(Euclid algorithm)求最大公约数原理是:gcd(a, b) = gcd(a, b-a)证明:设 z|a, z|b, 则z|(b-a)设 z不是a的因子,则z不伤a, b-a的公因子设 z|a,z不是b的因子,则z不是a,b-a的公因子递归求,边界是:b ...
2017-08-31 16:34:28 450
原创 图论-最短路径问题
最短路径问题1 Floyed穷举所有中间点k,如果i到j到距离大于i到k的距离 + k到j的距离,则刷新if(a[i][j]>a[i][k]+a[k][j]) a[i][j] = a[i][k] + a[k][j];#include using namespace std;const int MAX = 99999999;int n, m;in
2017-08-30 09:55:49 890
原创 「学习笔记」Eratosthenes筛法
Eratosthenes筛法是求1~n中的素数的筛法从2开始,把其倍数(从2倍开始)剔除,剩下的即素数 #include <iostream>using namespace std;bool p[100001]; //p[i]=true 表示i是素数int n, tot;int main() { cin >> n; for(int i=2; i...
2017-08-28 17:56:05 3653
原创 动态规划-背包类
(一)01背包有个背包,可以装重为V的物品。有n种物品,第i个物品的重量(或说是空间)是v[i], 价值是c[i],每种物品只有一件,求能装的最大价值二维解法:定义二维数组f[i][j],表示前i件 重不超过j的物品的最大价值动态转移方程:(根据第i件物品取或不取)f[i][j] = max(f[i-1][j], f[i-1][j-w[i]] + c[i]);文字的解释:
2017-08-28 13:28:08 1125
原创 C++ 数据结构-堆
堆--一种可被视为完全二叉树的结构,实现有多种方法(一) C++ STL - 优先队列实现1.首先写好队列头文件#include<queue>2.定义一个int型、值小的数优先级高(先出队列)的队列-----小根堆*最后的'<int>' 与‘>’间注意留空格priority_queue<int, vector<int>, greater<in...
2017-08-12 22:35:14 2572
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人