Acwing算法基础课
大风起兮x
这个作者很懒,什么都没留下…
展开
-
Acwing算法基础课——动态规划之背包问题总述
1.分类01背包:每件物品只能取一次,在容量有限的情况下使得权重最大完全背包:与01背包问题不同的是,每种物品可以取无限次多重背包:每种物品可以取有限个分组背包:有N组,每一组只能选一个2. 01背包问题2.1解题步骤2.1.1 状态表示考虑用几维状态表示:f[i][j]集合:所有选法的集合,满足两个条件,只从前i个物品选,选出来的物品总体积小于等于j属性:(最大值,最小值,数量),本题中是最大值注:若要对dp问题进行优化,一般是对状态方程进行等价变形2.1.2 状态计算集原创 2021-08-18 10:55:33 · 183 阅读 · 0 评论 -
Acwing算法基础课——图论之spfa算法
适用范围图论里面另外三个常用算法都是以外国人的名字命名的,我很好奇spfa是什么意思,一去查发现是shortest path faster algorithm,还是我校西南交通大学的老师命名的,哈哈自豪感油然而生。spfa其实就是用队列对bellman-ford算法进行了优化,因为bellman-ford算法不仅对前一次改变了距离的点进行了遍历,对上一次距离没有变动的点也进行了遍历(这就浪费了时间)。而spfa算法就是在bellman-ford算法的基础上增加了了一个队列,利用队列存储上一次更新了距离的原创 2021-08-17 17:17:59 · 310 阅读 · 0 评论 -
Acwing算法基础课——图论之bellman-ford算法
适用范围适用于有边数限制的最短路,可以有负权,可以有负环实践复杂度为O(km),k是边数限制,m是图中的边数原理基于离散数学的松弛操作和三角不等式,而我没有学习过离散数学 ,所以这里意会并且把代码练熟即可AC代码#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int M=10010;const int N=510;int d[N];i原创 2021-08-17 15:31:52 · 176 阅读 · 0 评论 -
Acwing算法基础课——图论之堆优化的dijkstra算法
思路首先请看懂我之前发的,dijkstra算法的朴素版本的讲解,既然是优化算法,那肯定是在某个算法的基础上进行优化的,如果基础版本都看不懂,那么直接看这个代码是毫无意义的。我的朴素迪杰斯特拉讲解#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=510;int map[N][N];int s[N];int d[N];int n,m原创 2021-08-17 11:15:02 · 265 阅读 · 0 评论 -
Acwing算法基础课——floyd算法
使用范围floyd算法用于求多源汇最短路问题(与单源最短路相对比:求图中每一个点到图中一个固定点的距离),多源最短路可以求出两两之间的最短路径。并且没有正负权值的限制,但是不可以有负环思路其他的问题都写得很复杂,我将其总结为一句话:动态规划的思想,用图中每一个顶点为中介,更新图中两两顶点之间的距离。AC代码Acwing上的题目链接#include<iostream>#include<algorithm>#include<cstring>using nam原创 2021-08-17 10:18:52 · 267 阅读 · 0 评论 -
(Acwing算法基础课)——图论之朴素迪杰斯特拉算法
图论之朴素迪杰斯特拉1.原题地址之前自己蓝桥杯拿到省二第一名,非常遗憾没有进入决赛的原因就是图论的两个题目一个都不会写,因为自己但是做完了往前十年的题目,省赛都是没有考过图论的,所以我当时打算的就是进入决赛之后再学习图论,没想今年蓝桥杯的题目风格大变,让我措手不及,也酿成了我大三最大的遗憾,所以我打算再准备一年,反正保研了大四会轻松些,我一定要拿到国奖!附上Acwing上的该题链接:Acwing849朴素迪杰斯特拉Ⅰ2.数据结构和算法思路适用于稠密图,用邻接矩阵存双重循环O(n^2)数据结构原创 2021-08-13 17:03:59 · 348 阅读 · 0 评论