随笔分类 - Algorithm
一些常用算法
摘要:
首先给出子图的定义: 子图: 设G = <V, E>,G' = <V', E'>为两个图(同为无向图or有向图), 如果V' ⊆ V && E' ⊆ E,则称G'为G的子图,G称为G'的母图,记作G' ⊆ G。 如果V' = V,则称G' 为 G 的生成子图(用到了所有的点 但不一定用到所有的边的子
阅读全文

摘要:
Dijkstra算法: Dijkstra算法常用于求无负权边中的最短路, 在优化后有比Bellman-Ford算法优秀很多的时间复杂度。 同样的,我们引入记号: G = <V,E>代表一个简单有向图(简单图:没有重边和自环) n = |V|代表顶点数 m = |E|代表边数 l(u,v)代表u到v的
阅读全文

摘要:
前置: 对于无向图中的一条边(u↔v),可以看作有向图中两条边(u→v)and(v→u)的结合。 我们可以通过这种方式把无向图转化为有向图, 从而使用有向图的最短路算法。 图的一些记号: G = <V,E>代表一个简单有向图(简单图:没有重边和自环) n = |V|代表顶点数 m = |E|代表边数
阅读全文

摘要:
背包问题入门篇 首先当然是我们最熟悉的01背包啦! 最简单的想法是,二维dp数组,不考虑其他的优化。 状态: dp[i][j] 表示取第 i 个物品,总体积为 j 时候的情况。 那么我们就会获得两种转移情况,对于下一个物品。一种是取了,一种是没取。 于是我们获得了状态转移方程: dp[i][j] =
阅读全文

摘要:
暂且就先以一道洛谷板子题作为讲解吧, 直接上代码,部分代码参考了优秀的大佬们的优秀的题解。(确实人家的码风很好呜呜呜) 1 #include<bits/stdc++.h> 2 #define ios ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
阅读全文
