上一页 1 2 3 4 5 6 7 8 9 ··· 26 下一页
摘要: 扩点最短路 不把实际位置看作图上的点,而是把实际位置和该位置的所有状态的组合看作是图上的点,BFS 或者 Dijkstra 的过程不变,只是增加了一些点。 864. 获取所有钥匙的最短路径 #include <iostream> #include <vector> #include <algorit 阅读全文
posted @ 2024-09-20 10:36 n1ce2cv 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 普通堆实现的 Dijkstra 算法 时间复杂度为 O(m * logm),m 为边数 distance[i] 表示从源点到 i 点的最短距离,visited[i] 表示 i 节点是否从小根堆弹出过 准备好小根堆,小根堆存放记录:(x 点,源点到 x 的距离),小根堆根据距离排序 令 distanc 阅读全文
posted @ 2024-09-18 21:12 n1ce2cv 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 位图 用 bit 组成的数组来存放值,用 bit 状态 1,0 代表存在不存在,取值和存值都用位运算。限制是必须为连续范围且不能过大。 实现 // 初始化位图大小,只支持 0 ~ n - 1 所有数字的增删改查 void Bitset(int n); void add(int num); void 阅读全文
posted @ 2024-09-17 12:48 n1ce2cv 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 双向广搜 用途一:小优化 BFS 的剪枝策略,分两侧展开分支,哪侧数量少就从哪侧展开 用途二: 特征:全量样本不允许递归完全展开,但是半量样本可以完全展开。(完全展开的过程中有可能能够进行分组,进行常数级优化) 过程:把数据分成两部分,每部分各自展开计算结果,然后设计两部分结果的整合逻辑 127. 阅读全文
posted @ 2024-09-16 20:03 n1ce2cv 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 图的广度优先遍历 1162. 地图分析 #include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; class Solution { public: int rows 阅读全文
posted @ 2024-09-14 21:22 n1ce2cv 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 最小生成树 最小生成树(英语:Minimum spanning tree,简称MST)是指在无向带权图中选择一些边,在保证连通性的情况下,边的总权值最小 最小生成树不唯一 如果无向带权图有 n 个点,最小生成树一定有 n-1 条边 P3366 【模板】最小生成树 Kruskal 算法 把所有的边,根 阅读全文
posted @ 2024-09-14 10:43 n1ce2cv 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 拓扑排序 LCR 113. 课程表 II #include <iostream> #include <vector> #include <queue> using namespace std; class Solution { public: vector<int> findOrder(int nu 阅读全文
posted @ 2024-09-12 17:08 n1ce2cv 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 建图 邻接矩阵 #include <iostream> #include <vector> using namespace std; // 点的最大数量 int MAX_N = 11; // 邻接矩阵方式建图 vector<vector<int>> graph(MAX_N, vector<int>( 阅读全文
posted @ 2024-09-12 09:41 n1ce2cv 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 洪水填充 设置路径信息进行剪枝和统计,类似感染的过程 路径信息不撤销,可以保证每一片的感染过程能够区分开 遍历次数和样本数量的规模一致 200. 岛屿数量 #include <iostream> #include <vector> #include <stack> #include <algorit 阅读全文
posted @ 2024-09-08 12:50 n1ce2cv 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 并查集 一开始每个元素都以自己为一个集合 find(i):查找 i 所在集合的代表元素,代表元素代表了 i 所在的集合 isSameSet(a, b):判断 a、b 是否在同一个集合里 union(a, b):将 a、b 所在的两个集合合并 并查集的实现 #include <iostream> #i 阅读全文
posted @ 2024-09-07 21:37 n1ce2cv 阅读(7) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 26 下一页