摘要:
负环 SPFA:检查cnt[u]是否大于n-1 DFS/BFS:可更新的点是否已经到过 阅读全文
posted @ 2020-10-23 20:08
林生。
阅读(80)
评论(0)
推荐(0)
摘要:
次小生成树 给定一张N个点M条边的图,在其生成的所有树中权值大小仅次于最小生成树的树被称为次小生成树。 结合模板题进行讲解。 次小生成树 给定一张 N 个点 M 条边的无向图,求无向图的严格次小生成树。 设最小生成树的边权之和为sum,严格次小生成树就是指边权之和大于sum的生成树中最小的一个。 输 阅读全文
posted @ 2020-10-23 20:06
林生。
阅读(89)
评论(0)
推荐(0)
摘要:
树上差分 引理:差分序列的前缀和是原序列。 原数列 9 4 7 5 9 前缀和 9 13 20 25 34 差分数组 9 -5 3 -2 4 前缀和的差分数组 9 4 7 5 9 差分数组的前缀和 9 4 7 5 9 树上差分即将区间操作转化为路径操作。 点差分 边差分 闇の連鎖 传说中的暗之连锁被 阅读全文
posted @ 2020-10-23 20:04
林生。
阅读(96)
评论(0)
推荐(0)
摘要:
最近公共祖先_LCA 给定一棵有根树,若节点z即可以到x也可以到y,则称z为xy的公共祖先,公共祖先中深度最大(即距离x,y最近)的则是xy最近公共祖先,称为LCA(x,y)。 以洛谷的**P3379【模板】最近公共祖先(LCA)**进行讲解: 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直 阅读全文
posted @ 2020-10-23 20:01
林生。
阅读(156)
评论(0)
推荐(0)
摘要:
树的直径 树中最远的两个节点之间的距离或者路径被称为树的直径。 树的直径一般有两种写法,时间复杂度都为O(n)。 树形DP 以1号节点为根,d[x]表示从x节点出发可达的最远距离,f[x]表示过x节点的最长路径长度。 对于每个x,扫描到x的第i个子树,d[x]储存了从x到1~i-1的子树的点的最远距 阅读全文
posted @ 2020-10-23 20:00
林生。
阅读(205)
评论(0)
推荐(0)
摘要:
最小生成树 Kruskal算法O(mlogm) 按边扫描,选边加入树,使每个子树都最小,一边加边一边合并,最后得到整棵树。 1.建立并查集,每个点个字构成一个集合。 2.将所有边按照w大小排序,依次扫描每条边(u,v,w)。 3.如果u,v属于同一集合(即相连,存在长度更小的使u和v相连的边),则跳 阅读全文
posted @ 2020-10-23 19:49
林生。
阅读(141)
评论(0)
推荐(0)
摘要:
最短路 单源最短路径 Dijkstra算法O(mlogn) 每次找到离出发点距离最近的且未被使用过的点,用此点去更新其他点。 1.初始化$dis[1]=0$,其余节点dis值为正无穷。 2.找出一个未被标记的,dis[u]最小的节点x,然后标记节点u。 3.扫描节点u的所有出边(u,v,w),若$d 阅读全文
posted @ 2020-10-23 19:46
林生。
阅读(90)
评论(0)
推荐(0)
摘要:
遍历所有边 看牛 给定N个点M条边的无向图,求一条路径,从节点1出发,最后回到节点1,并且满足每条边恰好被沿着正、反两个方向分别经过一次。 若有多种方案,输出任意一种即可。 输入格式 第一行包含两个整数N和M。 接下来M行每行包含两个整数a和b,表示点a和点b之间存在一条边。 输出格式 共2M+1行 阅读全文
posted @ 2020-10-23 19:45
林生。
阅读(312)
评论(0)
推荐(0)
摘要:
BFS能解决的问题图论都能解决,但BFS能跑的图必须有每条边权值相同的特质。 电路维修 #include<queue> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define MAXN 105 阅读全文
posted @ 2020-10-23 19:43
林生。
阅读(172)
评论(0)
推荐(0)
摘要:
折半搜索 假设每一位都要k种情况,则直接搜索的复杂度为$O(N$k\()\),折半搜索复杂度为$O(2*N$k/2\()\)。 #include<bits/stdc++.h> #define N 44 #define int long long using namespace std; int n, 阅读全文
posted @ 2020-10-23 19:39
林生。
阅读(109)
评论(0)
推荐(0)

浙公网安备 33010602011771号