算法学习
算法学习过程中的一些其他问题
FoolsSHAO
蒟蒻一只~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
高精度加减乘除(大数的加减乘除)
听完y总的高精度加减乘除后记录。 其中的乘法和除法只是有一方是大数,加减法是大数加减法。 高精度加法 #include <iostream> #include <string> #include <vector> using namespace std; string a, b; vector<int> A, B; vector<int> add(vector<int>& A, vector<int>&原创 2020-12-07 19:20:51 · 297 阅读 · 2 评论 -
从二分查找到lower_bound和upper_bound
今天听了y总的二分查找模板。做模板题目的时候,发现找一个数字在有序数组中出现的最早和最后一个,这不就是STL中的lower_bound和upper_bound么。 二分查找模板 模板1 int l = 0, r = n - 1; while(l < r) { int mid = l + r >> 1; if(a[mid] >= find) r = mid; else l = mid + 1; } //对应着lower_bound,找到数组中某个元素第一次出现的位置。 这种情原创 2020-11-25 19:23:21 · 323 阅读 · 0 评论 -
LCS算法(Longest Common Sequence)
LCS算法 Longest Common Sequence 假设存在两个字符串序列 X 和 Y $ X = {x_1, x_2, …, x_n}$ $ Y = {y_1, y_2, …, y_n}$ 考虑两个序列最后一个元素是否相等,可以得到 LCS(xn,ym)={LCS(xn−1, ym−1)+1,xn=ymmax(LCS(xn−1,ym), LCS(xn,ym−1)),xn!=ym LCS(x_n, y_m) = \begin{cases} LCS(x_{n-1},\ y_{m-原创 2020-11-05 15:55:47 · 789 阅读 · 0 评论 -
算法中的数学问题(基础篇)
最近在准备算法比赛,稍微的总结了一下算法中比较常用到常见的数学问题,分享给大家。 1.最大公约数 int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } 2.最小公倍数 int lcm(int a, int b) { return a / gcd(a, b) * b; // d = gcd(a,b) a*b / d 就是最小公倍数 // ,为了防止计算溢出 改成原创 2020-09-07 14:45:01 · 753 阅读 · 0 评论 -
树的直径(数学推导)
这篇写了重点在于数学推导,单纯的说总感觉有些情况没考虑。 所以特地推导一下树的直径两次dfs求法可行 条件:现有树tree有直径ab(直径就是树的最长路径) 推论:从树上任意一点能达到的最远的一个点一定是直径的端点。 反证法: 假设推论的反面成立,从树上任意一点达到的最远一个点不是直径的端点 ...原创 2020-08-18 10:23:15 · 297 阅读 · 0 评论 -
无向图的环路问题
1.无向图求是否存在环路 Union-find算法实现判断环路 具体做法 举个例子 现在有无向图存在环路 0-1-2-0 有三组关系连接 0-1 0-2 1-2 用一个集合加入每个关系的点 0-1 {0, 1} 0-2 {0,1,2} 1-2 两个点在集合中都存在,说明存在环路 关系无重复(无向图) #include <iostream> #include <set> using namespace std; int main() { int原创 2020-08-17 20:29:08 · 1141 阅读 · 1 评论
分享