随笔分类 - 介绍
摘要:二分图(1) 1.例题:染色法判断二分图 题目描述 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。 请你判断这个图是否是二分图。 输入格式 第一行包含两个整数 和 。 接下来 m 行,每行包含两个整数 和 ,表示点 和点 之间存在一条边。
阅读全文
摘要:Dijkstra 算法(2) 1.例题 题目描述 给定一个 个点 条边的有向图,图中可能存在重边和自环,所有边权均为非负值。 请你求出 号点到 号点的最短距离,如果无法从 号点走到 号点,则输出 −1。 输入格式 第一行包含整数 和 。
阅读全文
摘要:计数类DP 1.经典例题——整数划分 一个正整数 n 可以表示成若干个正整数之和,形如: ,其中 。 我们将这样的一种表示称为正整数 的一种划分。 现在给定一个正整数 ,请你求出 共有多少种不同的划分方法。
阅读全文
摘要:区间DP 1.区间DP简介 区间型动态规划是线性动态规划的拓展,它将区间长度 作为阶段,长区间的答案与短区间有关。 在求解长区间答案前需先将短区间答案求出。 区间型动态规划的典型应用有石子合并、乘积最大等。 2.经典例题:石子合并 题目描述 在一个操场上一排地摆放着 堆石子。现要将石子有次序
阅读全文
摘要:线性DP(中) 1.经典例题(3):最长公共子序列 一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列 ,则另一序列 是X的子序列是指存在一个严格递增的下标序列 $<i_1,i_2,…,i_k>
阅读全文
摘要:线性DP 1.线性DP简介 线性DP这类动态规划问题的状态一般是一维的f[i],第i个元素的 最优值只与前i-1个元素的最优值(正推)或第i+1个元素 之后的最优值(倒推)有关。 2.经典例题(1):数字金字塔 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最
阅读全文
摘要:完全背包问题 1.完全背包问题介绍 有 种物品和一个容量是 的背包,每种物品都有无限件可用。 第 种物品的体积是 ,价值是 。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 2.完全背包问题例题 有 种物品和一个容量是
阅读全文
摘要:Kruskal 算法 1.Kruskal 算法介绍 最小生成树: 给定一张边带权的无向图 ,其中 表示图中点的集合, 表示图中边的集合, , 。 由 中的全部 个顶点和 中 条边构成的无向连通子图被称为 $G
阅读全文
摘要:Prim 算法 1.Prim 算法介绍 最小生成树: 给定一张边带权的无向图 ,其中 表示图中点的集合, 表示图中边的集合, , 。 由 中的全部 个顶点和 中 条边构成的无向连通子图被称为 的一棵生
阅读全文
摘要:Floyd 算法 1.Floyd算法介绍 Floyd算法是最短路问题里的一种,用来求任意一对顶点之间的最短路径。时间复杂度为 ,适用于负边权的情况。 2.Floyd算法经典题目 给定一个 个点 条边的有向图,图中可能存在重边和自环,边权可能为负数。 再给定 个
阅读全文
摘要:Bellman Ford算法 1.最短路问题 在图论中,最短路问题分为单源最短路和多源最短路。 其中,单源最短路又分为存在负权边和不存在负权边两种。 Bellman Ford算法就是来解决存在负权边的最短路问题的。 2.Bellman Ford算法介绍 简称Ford(福特)算法,同样是用来计算从一个
阅读全文
摘要:Dijkstra算法 1.最短路问题 在图论中,最短路问题分为单源最短路和多源最短路。 其中,单源最短路又分为存在负权边和不存在负权边两种。 Dijkstra算法就是来解决不存在负权边的最短路问题的。 2.Dijkstra算法思想 如果图是不带负权的有向图或者无向图,从起点 每次新扩展一个
阅读全文
摘要:01背包问题 1.01背包问题介绍 01背包是指有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 01背包中的“01”是指每个物品只能选或不选,也就是选1次和选0次。 2.01背包问题例题 题目描
阅读全文