- 博客(31)
- 收藏
- 关注
原创 无向连通图 割点 桥 模板
1. 先通过tarjan标记一遍dfn和low数组,再计数。2. 可以任选一个节点为根,如果是一个环,那么dfs可以直接判断出来是一个根节点。如果根节点有大于一个的子树,说明这个节点是割点。3. 割点要 >=, 桥>。4. 要注意题目有没有重边,如果有,计算桥的时候要特殊标记。5. 割点的数目不等于可以分割部分的数目,后者要用强连通分量来计算。6. 求桥时无需判断是否是根节点。
2016-10-27 12:13:25 431
原创 有向图强连通分量 模板
强连通分量是指两两互相可达的一个分量。利用dfn而不是low的原因是还在栈中的元素low并没有计算完,而且没有计算low的必要,在割点后的已经被计算,在割点前的low值也不由这个节点来决定。
2016-10-26 11:20:16 543
原创 floyd 最短路 模板
floyd 算法主要解决:有负权边的有向图或者无向图的两两节点之间的最短路。如果存在有G\[i\]\[i\]是负数,那么说明有负权环。
2016-10-22 14:01:33 435
原创 spfa 有无负权环 负权边最短路 模板
spfa 是利用队列优化的快速bellman-ford的算法,可以判断是否有负权环,如果没有的话可以求出来最短路。
2016-10-21 15:37:33 941
原创 并查集 模板
并查集是高效的查询两个元素是否属于一个集合的方法,为了使用方便把关系并查集和并查集利用面向对象和泛型编程的思想写在了一起。template <typename Type>class DisjointSet { struct node { int parent_; Type relation_; //parent -> this ...
2016-10-20 00:09:33 356 1
原创 POJ 1611 The Suspects 并查集
Problem: 给了一些队伍,求出0号学生所在队伍的人数,每一个学生可以属于多个团队。 Solution: 并查集的模板题,把各个学生merge,然后直接query就可以了。#include<cstdio>#include<iostream>#include<sstream>#include<cstdlib>#include&...
2016-10-19 22:01:58 298
原创 RMQ 区间最值 模板
1. RMQ 的全称为Range Max/Min Query。2. 构造dp数组的时间为O(nlogn), 但是查询时间为O(1),所以当数据量小于logn时,用朴素遍历找最值就好,但是请求次数大于logn时,就要用这个模板。3. 利用动态规划的思想。
2016-10-11 12:09:41 357
原创 Hdu 4333 Revolving Digits 扩展KMP
Problem:给一个大整数,有一个操作可以把最后一个数字移到最前面,问有多少个不同的数大于原来的数,小于原来的数,等于原来的数?
2016-10-04 00:55:33 406
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人