- 博客(4)
- 收藏
- 关注
原创 ACM_种类并查集
简介种类并查集: 和基础并查集有很大一部分相同, 多了一个判断2个元素是否属于同一个集团(不是集合, 集合是用来判断2个元素是否能够判断他们属不属于同一个集团:有点绕, 举个例子, 假如知道1和2在不同的集团, 3和4在不同集团,我们就不能判断1和3是否属于一个集团,而集团是用来判断他们是否在同一个集团假如:已知1和2在不同集团,2和3在不同集团, 那么我们就知道1和3在同一个集团);要懂
2015-09-29 19:52:34 2087 1
原创 ACM_基础并查集
基础并查集: 用于高效的查找某两个元素是否属于同一个集合;一.普通的查找方式:初始化所有的元素的父亲都是它自己: for(int i = 1; i <= n; i++) pa[i] = i;find函数, 每次向上找它的父亲, 直到找到它的根(根的特点是pa[i] == i): int find(int x){ return x == pa[x] ? x : find(pa[x]);
2015-09-29 18:56:10 1485
原创 ACM_dijkstra单源最短路
时间复杂度O(E + VlogV) E是边数, V是顶点数具体算法dijkstra算法:找单源最短路的算法, 单源指的是起点固定且只有1个, 求到其他点的最短距离, 终点也固定的叫两点间的最短距离, 两种情况的复杂度是一样的, 所以都转化成单源最短路解决; 如图:求1到其他点的最短路! PS : dijkstra仅适用于边权为正的情况; dijksta是不断选出距离最小的点并不断的利用这个
2015-09-13 21:41:47 559
原创 ACM_快速幂
题意:一个向上的三角形 可以分解成3个向上的三角形 1个向下的三角形;然后每个向上的三角形又可以分解成三个向上的三角形和1个向下的三角形,每个向下的三角形又可以分成1个向上的三角形和3个向下的三角形(见图)……如此循环下去, 问循环到第n次时有多少个向上的三角形;做法:可以注意到循环到第n次的时候, 第一层有1个向上的三角形, 第二层有2个向上的三角形,第三层3个……最底层有2^n个三角形 所以总
2015-09-05 19:34:24 429
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人