![](https://img-blog.csdnimg.cn/20210308204514663.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
AcWing算法基础课
文章平均质量分 80
AcWing算法基础课
打雷要下雨,雷欧
这个作者很懒,什么都没留下…
展开
-
第五章 动态规划(二)
本节目录线性DP区间DP1. 线性DP递推顺序是线性的898. 数字三角形分析见寒假每日一题code#include <iostream>using namespace std;const int N = 510;int n, a[N][N];int main(){ scanf("%d", &n); for (int i = 1; i <= n; i ++ ) for (int j = 1; j <=原创 2021-03-21 15:15:45 · 193 阅读 · 0 评论 -
第五章 动态规划(一)
1.背包问题当空间优化为一维之后,只有完全背包问题的体积是从小到大循环的。(1)01背包:每件物品最多只用一次(2)完全背包:每种物品有无限个(3)多重背包:每种物品最多有Si个(4)分组背包:物品分为N组,每一组有若干个物品,每一组只能选一件物品2. 01背包问题分析解析:一件物品只有选和不选两种可能,所以是0-1背包。dp[i][j] 表示只考虑前 i 个物品,物品总体积 <= j 的情况下,最大价值是多少dp[i][j]怎么来呢?来自两种情况:1.不选择第 i 个物品d原创 2021-03-20 12:42:12 · 88 阅读 · 0 评论 -
第三章 搜索与图论(三)
最小生成树本节课大纲:一般都是无向图的最小生成树Prim 算法和 Dijkstra 算法很像如果是稠密图,一般选择朴素版 Prim,因为代码短,稀疏图一般用克鲁斯卡尔算法。堆优化的 Prim 的优化方式和 Dijkstra 一样的,而且很少用到,所以不讲了。朴素版Prim例题:858. Prim算法求最小生成树样例模拟: i = 1时1.选择距离集合最近的点,t = 22.st[2] = true;3.用t更新其他点到集合的距离 3号点连向集合的边有两个,选距离原创 2021-03-06 21:57:03 · 100 阅读 · 0 评论 -
第三章 搜索与图论(二)
Bellman-Ford 算法for循环n次 一定要对原来的距离备份,防止串连 for 所有边 a, b, w. a⟶wba\stackrel{w}{\longrightarrow}ba⟶wb (从a到b的边,权重为w)(边的存储方式不一定写成邻接表, 可以是结构体) dist[b] = min(dist[b], dist[a] + w);串联问题(备份)比如截图中右上角的问题边权重1-2 权重1, 2-3 权重1, 1-3权重3, 求1到3 最多经过1条边的最短路.应该是3原创 2021-02-27 11:35:59 · 220 阅读 · 0 评论 -
第三章 搜索与图论(一)
01:55:34开始拓扑排序图的宽搜的经典应用—> 求拓扑序列图的拓扑序列是针对有向图来说的有向无环图---->拓扑图度数:入度: 一个点有几条边进来出度: 一个点有几条边出去入度为0的点可以作为起点(因为没有任何点指向我)queue <--- 所有入度为0的点while (queue 不空) { t<--队头 枚举t的所有出边t->j; 删掉t->j边, d[j] --; // 为什么要删掉t->j呢, if (d[j] == 0原创 2021-03-20 15:23:35 · 143 阅读 · 0 评论 -
第三讲 搜索与图论 目录
第三章 搜索与图论(二)DijkstraAcWing 849. Dijkstra求最短路 IAcWing 850. Dijkstra求最短路 IIbellman-fordAcWing 853. 有边数限制的最短路spfaAcWing 851. spfa求最短路AcWing 852. spfa判断负环FloydAcWing 854. Floyd求最短路...原创 2021-02-27 15:00:20 · 108 阅读 · 0 评论 -
hash表及字符串前缀hash
本文是对Acwing算法基础课hash表的总结总览用途hash表用途是将[−109,109]→[0,105][-10^9, 10^9] \to [0, 10^5][−109,109]→[0,105], 缩小范围, 一般需要将定义域上的值取mod, 取mod的这个数最好是质数, 这样可以最大程度上避免冲突冲突及解决方案因为有冲突的存在, 有以下两种解决办法, 也就是hash的存储方式.hash表的存储结构分为开放寻址法和拉链法先寻找到最近的质数, 比如寻找最接近100000的质因数寻找质数原创 2021-03-03 18:18:42 · 291 阅读 · 5 评论 -
第一章 基础算法(三)
课程内容双指针算法位运算离散化区间合并双指针算法类型两大类:1.两个指针指向同一个序列2.两个指针指向不同的序列通用模板for(int i = 0, j = 0;i < n;i++){ // check()不一定要明写出来,它只是表示满足某种性质 while(i < j && check(i, j)) j++; // 每道题目的具体逻辑 // 虽然说循环长成这样样子, 看起来是两重循环, 但是每一个指针在循环中移动次数不原创 2021-03-06 15:06:03 · 224 阅读 · 0 评论