![](https://img-blog.csdnimg.cn/20210607213233541.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
常用基础算法
算法
ΘLLΘ
ΘLLΘ的博客!
展开
-
最短路问题
文章目录最短路问题一.朴素dijkstra算法二.堆优化版dijkstra 算法三.Bellman-Ford算法四.spfa 算法五.floyd算法六.一些题目题1:信使题2:香甜的黄油题3:最小花费七.附录(四种解法模板,转载自[AcWing](https://www.acwing.com/blog/content/405/))1.朴素dijkstra算法2.堆优化版dijkstra3.Bellman-Ford算法4.spfa 算法5.floyd算法最短路问题序:最短路问题:求图中某个点到另一个点所原创 2021-04-27 13:15:55 · 545 阅读 · 15 评论 -
[蓝桥杯2016决赛]路径之谜
#include <iostream>#include <algorithm>#include <cstring>#include <queue>#include <set>#include <math.h>#include <map>using namespace std;typedef long long LL;const int N=25; int r[N],l[N];int n;int dx原创 2021-04-14 21:19:08 · 143 阅读 · 1 评论 -
2019蓝桥杯省赛
迷宫问题:下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这个它的上、下、左、右四个方向之一。对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,一共10 步。其中D、U、L、R 分别表示向下、向上、向左、向右走。对于下面这个更复杂的迷宫(30 行50 列),请找出一种通过迷宫的方式,其使用的步数最少,在步数最少的前提下,原创 2021-03-31 21:09:29 · 111 阅读 · 0 评论 -
算法常用模板
第四部分:数学知识一.质数问题(1)试除法判定质数int is_prime(int n){ if(n<2) return false; for(int i=2;i<=n/i;i++) if(n%i==0) return false; return true;}(2)试除法分解质因数int divide(int n){ for(int i=2;i<=n/i;i++) if(n%i===0)转载 2021-03-21 10:16:45 · 137 阅读 · 0 评论 -
算法常用模板
第三部分:搜索与图论这一篇我们讲最短路和最小生成树的问题:一.最短路问题求解(1)朴素dijkstra算法转载 2021-03-18 19:56:54 · 332 阅读 · 0 评论 -
算法常用模板
第三部分:搜索与图论1.树与图的存储树是一种特殊的图,与图的存储方式相同。对于无向图中的边ab,存储两条有向边a->b, b->a。因此我们可以只考虑有向图的存储。(1) 邻接矩阵:g[a][b] 存储边a->b(2) 邻接表://对于每个点k,开一个单链表,存储k所有可以走到的点。//h[k]存储这个单链表的头结点int h[N],e[N],ne[N],idx;//添加一条边a->bvoid add(int a,int b){ e[idx]=b,转载 2021-03-17 12:25:02 · 125 阅读 · 1 评论 -
算法常用模板
第二部分:数据结构二.Trie树,并查集,堆,一般哈希,字符串哈希1.Trie树int son[N][26],cnt[N],idx;// 0号点既是根节点,又是空节点// son[][]存储树中每个节点的子节点// cnt[]存储以每个节点结尾的单词数量// 插入一个字符串void insert(string s){ int p=0; for(int i=0;s[i];i++) { int u=s[i]-'a'; if转载 2021-03-16 10:47:51 · 86 阅读 · 0 评论 -
算法常用模板
第二部分:数据结构一.数组模拟链表,栈,队列,单调栈,单调队列1.链表(一)单链表// head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点int head, e[N], ne[N], idx;//初始化,第一个结点从0开始void init(){ head=-1; idx=0;}//在链表头插入一个数xvoid insert_head(int x){ e[idx]=x; ne[idx]=head转载 2021-03-16 09:26:33 · 142 阅读 · 0 评论 -
算法常用模板
第一部分:基础算法三.高精度加减乘除算法总结1.高精度加法在这里插入代码片2.高精度减法在这里插入代码片3.高精度乘法在这里插入代码片4.高精度除法在这里插入代码片转载 2021-03-15 10:01:41 · 104 阅读 · 1 评论 -
算法常用模板
第一部分:基础算法二.二分算法总结**1.浮点数二分算法模板 **bool check(double x){/**/};// 检查x是否满足某种性质double bsearch_1(double l,double r){ const double eps=1e-6;// eps 表示精度,取决于题目对精度的要求 while(r-l>eps) { double mid=(l+r)/2; if(check(mid)) r=m转载 2021-03-15 09:08:37 · 123 阅读 · 0 评论 -
算法常用模板
第一部分:基础算法1.快速排序算法模板void quick_sort(int l,int r,int q[]) { if(l>=r) return; int i=l-1,j=r+1,x=q[l+r>>1]; while(i<j) { do i++;while(q[i]<x); do j--;while(q[j]>x); if(i<j) swap(q[i],q[j]); } quick_sort(l,j,q); quick_sort(j+1,r,q); }..转载 2021-03-15 08:39:22 · 142 阅读 · 2 评论