摘要: 1. 指针的用处 "链表" 2. 指针的定义 2.1. 基本概念 指针就是指向一个变量或者指针的变量,它里面存储的值是一个内存空间的地址。 当然,一个指针也可以指向指针。 2.2. 代码实现 cpp int i = 3; int p = &i; int q = &p; cout`运算符 或,如果你愿 阅读全文
posted @ 2020-01-16 21:45 方而静 阅读(163) 评论(0) 推荐(0)
摘要: 使用场景 二分答案一般使用在求解符合条件的最小值或者最大值上面,当我们遇到这两个问题的时候,一般都可以使用二分答案来解决问题。 什么是二分答案 二分答案就是通过对所有可能的答案区间进行折半查找,不断缩减范围,最终确定答案的方法。 求最小值 cpp //求最小值 int binary(int left 阅读全文
posted @ 2020-01-16 21:43 方而静 阅读(245) 评论(0) 推荐(0)
摘要: 基本问题 有N件物品和一个容量为V 的背包。放入第$i$件物品耗费的空间是$C_i$,得到的价值是$W_i$。求解将哪些物品装入背包可使价值总和最大。 思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即$F[i,v]$表示前i件物品恰放入一个容量为v的背包 阅读全文
posted @ 2020-01-16 21:41 方而静 阅读(1808) 评论(0) 推荐(0)
摘要: 递归 汉诺塔问题 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移 阅读全文
posted @ 2019-12-14 17:14 方而静 阅读(279) 评论(0) 推荐(0)
摘要: 前置知识 邻接表存储及遍历图 tarjan求强连通分量 割点 割点的定义 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多,就称这个点集为割点集合。 也就是说,就是有个点维持着连通分量的继续,去掉那个点,这个连通分量就无法在维持下去,分成好几 阅读全文
posted @ 2019-11-24 15:35 方而静 阅读(591) 评论(0) 推荐(1)
摘要: 1.从代数到图论 1.1.差分约束方程 差分约束方程就是形如 $x_i-x_j \leq w_{ij}$ 或 $x_i-x_j \geq w_{ij}$ 的方程组 阅读全文
posted @ 2019-10-04 17:22 方而静 阅读(273) 评论(0) 推荐(2)
摘要: 1. 指针的用处 "链表" 2. 指针的定义 2.1. 基本概念 指针就是指向一个变量或者指针的变量,它里面存储的值是一个内存空间的地址。 当然,一个指针也可以指向指针。 2.2. 代码实现 cpp int i = 3; int p = &i; int q = &p; cout`运算符 或,如果你愿 阅读全文
posted @ 2019-10-04 17:17 方而静 阅读(210) 评论(0) 推荐(0)
摘要: 1. 最小生成树定义 树是指没有环路的图,生成树就是指一个图上面删除一些边,使它没有环路。 最小生成树就是指生成树中边权之和最小的那一种。 上图的最小生成树就是这样: 2. Prim 算法 2.1. 算法流程 就以上图为例: 1. 先选择一个起始点,我们就以A为例。 2. 创建一个集合S,用来存储已 阅读全文
posted @ 2019-10-04 14:08 方而静 阅读(1093) 评论(0) 推荐(4)