图论
林苏泽
很多时候终点看着很远,实际也很远,但只要你不向它跑去,他永远都很远,所以只有你向它跑去,才能更接近它,所以加油,向前奔跑吧,即使最后没有到达所想的终点,但我想也不会差。起码我们已经比别人距终点近了好多。
展开
-
ABC226E - Just one (连通图+思维)
链接题意:给出n个点m条无向边,让你构造出每个节点只有一个出度的图,问有多少种?分析:开始读错题了。读成每个节点可以有大于等于1的出度我们知道正确题意之后,进行解读,要求每个节点只有一个出度得知,在一个连通图中边数一定只能有节点数这么多,这样就有两种选择,所以我们就将问题转化成找合法的连通图,所谓合法就是边与连通图中的节点相等,我选择用并查集维护,并且维护边数点数。/// 欲戴皇冠,必承其重。#include <bits/stdc++.h>using namespace std原创 2021-11-08 14:10:29 · 273 阅读 · 0 评论 -
最短路(总结)(待补)
4总算法Dijkstra算法例题 HDU2544 最短路1,盗图 不知道是哪位大佬的,先看着吧Dijkstra算法就是从头开始遍历,知道与它相连小路径的,再用这个最小的去找与它相连路径与 从头到它比较 取小值 (不懂看图)。,其实就是不断地找最小的从最短的跑出去跟他直接到 看谁的路径更短。这是dijkstra的核心算法。还有一个难点 :就是建图#include<ios...原创 2021-08-30 00:23:27 · 123 阅读 · 1 评论 -
我们爱序列(并查集)
AngryBacon 非常喜欢序列,与序列有关的一切都喜欢。AngryBacon 面前摆着一个长度为 N 的序列,每个元素为不超过 M 的正整数。AngryBacon 会使用 Q 次魔法,每次魔法的内容为一对不超过 M 的正整数 a,b,表示将序列中所有 为 a 的数改写为 b。AngryBacon 想知道在最后他心爱的序列变成了什么样。Input第一行,包含三个整数 N,M,Q,意义如上所述。第二行,包含n个整数表示初始序列。接下来Q行,每行2个整数a,b。Output输出一行,包含 N原创 2020-12-01 20:54:06 · 175 阅读 · 0 评论 -
结队(并查集+数学)
问题 A: 结队时间限制: 1 Sec 内存限制: 128 MB[提交] [状态]题目描述众所周知,小X是一个风流倜傥、有极高人格魅力的奆老。奆老总喜欢挑战高难度的事情,幻想着横穿和自己一样大名鼎鼎的亚马逊雨林。这个幻想了7083年的事情终要变为现实,小X高兴得连灌两盆洗脚水。“啊……真香……该死的甜美…………”古代著名学者度娘在《百度百科》一书中说到:亚马逊热带雨林(AmazonRainForest)位于南美洲的亚马逊平原,占地550万平方公里。雨林横越了9个国家:巴西(占森林60%面原创 2020-11-30 16:48:12 · 221 阅读 · 0 评论 -
并查集
一,并查集==说通俗点就是两个东西之间的连通器例题嘛HDU1232畅通工程洛谷3367并查集简单来说并查集也没什么,就是两个函数,一个是查找(找一个东西的祖先),另一个是合并(相当于两个人结为姻亲)查找函数注意:这里a【】数组是开在全局变量中的 而写在主函数中初始化为i也就是 a[i]=i 就是他自己跟他自己int a[10000];int find(int n){ int ...原创 2020-05-06 15:11:31 · 183 阅读 · 0 评论 -
ABC 214 D - Sum of Maximum Weights(带权并查集)
链接题意:给出你一棵树,n个点,(n-1)条边,让求∑i=1n∑j=i+1nf(i,j)\sum_{i=1}^n\sum_{j=i+1}^{n} f(i,j)∑i=1n∑j=i+1nf(i,j).f(i,j)f(i,j)f(i,j)表示从i到j最短路径上最大边权值。分析:首先我们分析最短路径上的最大边权值,那么只要经过最大边权的两个点,肯定贡献就是这个边权了,那么我们就可以这样想 :那么会有多少个点对代价是这条边那,就是这条边左边连的点数乘以右边连的点数,及3*3乘以点对,之后那,之后这个原创 2021-08-14 23:31:03 · 352 阅读 · 2 评论 -
AcWing 3797. 最大化最短路 (贪心优化最短路)
链接题意:给出一个图,给出你k个特殊点,你必须在图上加上一条边,加的边两个端点是特殊点,可以加已经存在的边,边长度都为1.分析:首先我们对其进行分析。一共三种情况:我们直接从1到n,加的边不影响我们的最短路。我们从1走到特殊点a,然后在a和b两个特殊点之间加上一条边,然后从b走到n。我们从1走到b,再从b走到a,再从a走到n.对第一种我们先搁置。看第二和第三种,我们选大的即可,比较一下,如果我们假设第二种路径长,那么:我们用dis表示1到某个点的最短路,用vis表示n到某一个点的最短路原创 2021-08-09 11:39:14 · 127 阅读 · 0 评论 -
Floyd算法
原本只会用Floyd算法的板子,今天上数据结构,老师讲了下,有点深入理解了,打通了任通二脉。作用 计算任意两点间的最短路径。时间复杂度是O(N3)的。设Dk[i,j]D^k[i,j]Dk[i,j]是经过结点标号数不超过k的结点从iii到jjj的最短路径。其实是从上一个状态(Dk−1[i,j]D^{k-1}[i,j]Dk−1[i,j]转移过来的)从经过结点标号数不超过k-1的结点从iii到jjj的最短路径。转移过来的。在原不超过k−1k-1k−1的基础上加上标号为kkk这个结点,判断是否路径变短了。原创 2020-12-07 21:44:13 · 201 阅读 · 0 评论
分享