随笔分类 -  算法

摘要:邻接矩阵 设一个图中有n个点,那么这个图的邻接矩阵就是一个nn的矩阵。 所以用一个二维数组map[][]来储存这个邻接矩阵。 举个例子:若已知无向图中,xy的路径权值是z,那可以给map[x][y]赋值为z,由于这是一个无向图,所以还需要反向连一次边,就是把$ 阅读全文
posted @ 2022-01-12 19:09 duoluoluo 阅读(39) 评论(0) 推荐(0) 编辑
摘要:线性筛约数个数 #include <iostream> #include <cstdio> using namespace std; const int N = 10000000; int n, prime[N + 1], dnum[N + 1]; void init (int n) { dnum[ 阅读全文
posted @ 2022-01-12 19:08 duoluoluo 阅读(30) 评论(0) 推荐(0) 编辑
摘要:Kruskal算法 给定一张无向图,若用这张图的全部节点构成一棵树,且这棵树所有边的权值之和最小,则称这棵树为最小生成树。 所以很显然我们只需找出n1条边,让这些边使这张图不构成环的前提下,边权尽可能小,这就是Kruskal算法。 算法流程:我们把边权按照从小到大排序,然后按顺序把他们接到 阅读全文
posted @ 2022-01-12 19:08 duoluoluo 阅读(85) 评论(0) 推荐(0) 编辑
摘要:深度优先搜索(DFS) 深度优先搜索的思想是从一个节点出发,不停地向深处访问它的子节点,直到它的子节点除了它的父亲外没有别的节点与之相连,那么这时就回溯,退到它的父亲节点,继续上一步的操作。 所以,深度优先搜索是一个递归的过程。 理解了深度优先搜索的思想,现在来看看它的代码是如何实现的: void 阅读全文
posted @ 2022-01-12 19:07 duoluoluo 阅读(217) 评论(0) 推荐(0) 编辑
摘要:什么是负环? 负环的定义是在一个环中,其环上的权值和小于0。 怎么判断负环? 根据负环的定义,我们知道在有负环的图中不存在最短路,因为你可以绕着负环一直跑,而你的路径和却会越来越少! 所以如果我们在有负环的图上跑SPFA,会陷入死循环的! 正因为这点,所以可以用SPFA来判断负环。 用$cnt[ 阅读全文
posted @ 2022-01-12 19:04 duoluoluo 阅读(288) 评论(0) 推荐(0) 编辑
摘要:什么是树的直径? 一棵有权值的树上,两点之间的距离为这两点之间的路径权值和,而树的直径就是最远的两个节点的距离,即最大的权值和。 如同上图所示,这棵树的直径就是节点4与节点7的距离,长度为12。 怎么求树的直径? 树的直径通常有两种解法:树形DP,两遍搜索。 树形DP: 树的直径一定是某 阅读全文
posted @ 2022-01-12 19:04 duoluoluo 阅读(704) 评论(0) 推荐(0) 编辑
摘要:什么是差分约束系统? 差分约束系统是一种特殊的N元一次不等式组,它包含N个变量以及M个约束条件,每个约束条件都是由两个变量作差得到的,形如XiXjCk,其中Ck是常数。 我们根据题目要求,并用这M个约束条件求出某个不等式的最值,例如XNX1阅读全文
posted @ 2022-01-12 19:03 duoluoluo 阅读(116) 评论(0) 推荐(1) 编辑
摘要:Tarjan求强联通分量 什么是强联通分量? 强联通分量即在图中找出一个最大的图,使得这个图上的任意点可以互相到达,一个点也可以算是一个强联通分量。 如上图,1243构成了强联通分量,因为它们在一个环上,可以互相到达,同时56也分别是强联通分量。 怎么求强联通分量? 阅读全文
posted @ 2022-01-12 19:03 duoluoluo 阅读(266) 评论(0) 推荐(1) 编辑
摘要:什么是LCA LCA即是树上两个节点的最近公共祖先。 这个应该都知道是什么意思吧= = Tarjan求LCA 这个一个离线算法(离线算法就是把所有询问先读入并储存,最后再把答案一起输出),它的算法流程如下: 当访问到某个节点,且还未回溯到这个节点时,把这个节点标记为1。 如果已经访问并回溯到了某 阅读全文
posted @ 2022-01-12 19:02 duoluoluo 阅读(350) 评论(0) 推荐(0) 编辑
摘要:什么是树形DP? 顾名思义,就是在树上DP。 怎么树形DP? 通常情况下,就是就是从根节点开始DFS,并进行DP。 状态转移一般是从子节点向上转移,具体怎么转移看题目。 所以总的来说就是把平常的动态规划在树上转移而已。 我知道我上面讲的就是废话qwq 一道模板题 很经典的树形DP 题解: 首 阅读全文
posted @ 2022-01-12 19:02 duoluoluo 阅读(79) 评论(0) 推荐(0) 编辑
摘要:众所周知,一棵树如果有N个节点,那么这棵树有N1条边,而基环树就是有N个节点,N条边,相当于在一棵树上多连一条边形成一个环。 所以对于基环树,我们在树上可以用的算法是不能直接套进基环树里面用的。 那么如何解决呢? 把这个基环树删掉一条边变成树就行了! 基本上所有题目都是这样子的 阅读全文
posted @ 2022-01-12 19:01 duoluoluo 阅读(381) 评论(0) 推荐(0) 编辑
摘要:欧拉路 给定一张无向图,若存在一条从节点x到节点y的路径,恰好经过每条边一次(节点可以重复经过),那么称这条路径为xy的欧拉路。 欧拉回路 如果存在一条欧拉路从x出发并且回到x,那么称这条路径为欧拉回路。存在欧拉回路的无向图被称为欧拉图。 欧拉路的存在性判定 无向图 每个节 阅读全文
posted @ 2022-01-12 19:00 duoluoluo 阅读(303) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示