随笔分类 -  0x71最短路,最小生成树

摘要:题目链接 #题目大意 给你一些交通方式和站点,不同的交通方式碳排放不一样,问从起点到终点距离不超过B的路径中最少的碳排放是多少。 #解题思路 最短路和dp的混合题,设dp[u][j]表示到点u路径长度为j的最少碳排放,在最短路进行松弛的过程中进行状态转移就行了。 #代码 const int maxn 阅读全文
posted @ 2021-03-05 19:59 shuitiangong 阅读(98) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给你一个无向图问是否可以构造一颗生成树,使1号点的度数为d。 #解题思路 先把与1号点相连的边的权值都改成INF,其他是0,这样的话如果还用权值为INF的边,说明这些边是必不可少的,如果使用的权值为INF的边大于d,必定无解。否则,将之前必须用到的与1相连边的权值设成-1,其他 阅读全文
posted @ 2021-02-23 23:22 shuitiangong 阅读(97) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给你n个点,你可以在这个点上建站,也可以通过一条边将这个点与站点(直接/间接)连通。 #解题思路 本题主要是考察建图技巧,因为每个点要么建站,要么与其他点连通,并且至少有一个站点,所以我们再加入一个点,这个点与所有点连通,并且花费是每个点建站的花费,然后再把所有点建一个完全图跑 阅读全文
posted @ 2021-02-12 23:00 shuitiangong 阅读(79) 评论(0) 推荐(0)
摘要:题目链接 #解题思路 经典的逆向思维,题目数据的特殊性提示我们利用好k只有100的条件。 每次用bfs把所有编号相同的点作为搜索的起点,根据bfs的性质,每个点第一次被访问的时的距离就是它离起点最近的距离。然后对于每个点,选出前s大即可。 #代码 const int maxn = 1e5+10; s 阅读全文
posted @ 2020-08-04 22:10 shuitiangong 阅读(159) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 求把所有的S与A连通所需要的边长。题目有一个坑点就是输入m和n的那一行后面可能还有字符(可能还不止一个???,所以需要过滤一下。 #解题思路1 这题很容易看出来是让求一棵最小生成树的大小,我们任选一个点做最小生成树的起点都没有问题所以A和S其实是一样的。 但是题目并没有给出边, 阅读全文
posted @ 2020-05-27 18:50 shuitiangong 阅读(143) 评论(0) 推荐(0)
摘要:题目链接 #解题思路 看这题第一眼就想到了二分,虽然也过了不过还有一个更好的解法。本题的核心就是如何找到那条可以最小的最大的边$S$,二分确实是一个办法,但是还有一种办法是求最小生成树,其最大边就是$S$。 因为最小生成树是将几条不重复的最小的边加入集合形成的树,那么如果要构造一棵树都所有边比最小生 阅读全文
posted @ 2020-05-26 19:15 shuitiangong 阅读(159) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给$n$个点和$m$条单向边,求从$1$号出发再从$1$号点回来的最短路。 #具体实现 从$1$号点出发到各个点就是裸的最短路,而从各个点回到$1$号点,可以反向建边求$1$号点到各个点的最短路。但是这题用$vector$存边会卡常数,建议用邻接表$or$链式前向星。 #代码 阅读全文
posted @ 2020-04-22 11:00 shuitiangong 阅读(181) 评论(0) 推荐(0)
摘要:"题目链接" 题目大意:让你求一棵生成树,使这棵生成树所有的边通过与运算得到的值最大。 假设通过与运算得到的最大值为m,那么m每个二进制位上的1都应该与这棵树所有边的权值的二进制位对应位置的1相同。又因为进位制的性质,高位的数比所有低位的数之和还要大。所以我们可以通过从高到低来枚举二进制位,如果这个 阅读全文
posted @ 2020-04-02 13:32 shuitiangong 阅读(165) 评论(0) 推荐(0)
摘要:"题目链接" 题目大意:给你货币种类、交换点数量、最开始的货币种类和拥有的数量,问你有没有一种货币交换手段可以使货币越换越多。 最短路求负环的变形,最长路求正环。 阅读全文
posted @ 2020-03-31 15:40 shuitiangong 阅读(104) 评论(0) 推荐(0)
摘要:"题目链接" 题目大意:给你一个邻接矩阵和每个点的权值,问你任意两点的最短路的花费以及路径。 这个题途中经过某个点收费很好处理,只要在松弛的时候加上中间点的权值即可,但是打印路径就有些麻烦了。因为是多源最短路问题,所以我们不能像单源最短路那样用一维的数组来存前驱/后驱来打印路径了。 我们可以用一个二 阅读全文
posted @ 2020-03-29 12:01 shuitiangong 阅读(97) 评论(0) 推荐(0)
摘要:[题目链接](https://vjudge.net/contest/364766 problem/C) 题目大意:每两个点之间只有一条边表示两点关系,关系具有传递性,问有多少点对之间没有关系。 这题利用了传递闭包来解。我们根据题目输入可以得到一条$a b$的边,表示$a$赢$b$,那么反过来我们也可 阅读全文
posted @ 2020-03-28 11:54 shuitiangong 阅读(109) 评论(0) 推荐(0)
摘要:"题目链接" 题目大意:给你一个加权图,里面有m个无向正权边和w个单向负边,判断有没有负环。 floyd可以求两点之间的最短路,如果两个点一样,即是一个环,判断图中环的大小是不是负即可。 阅读全文
posted @ 2020-03-27 22:41 shuitiangong 阅读(264) 评论(0) 推荐(0)
摘要:"题目链接" 在普通的floyd的第一重循环内加上的一段代码,求3点形成的最小环,这题有个坑点是因为会加三个变量, INF小心开太大爆int。 阅读全文
posted @ 2020-03-27 22:36 shuitiangong 阅读(119) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/HDU-2112 题目大意:就是找一条从起点到终点的最短路 最短路裸题,要注意的一点是起点可能和终点在同一个地方一段时间没写最短路忘得差不多了,顺便也有熟悉了一下链式前向星 #include<set> #include<map> #in 阅读全文
posted @ 2020-03-08 00:11 shuitiangong 阅读(176) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/POJ-2377#author=tsacm123 题目大意:就是让你算出n个谷仓之间的最大生成树,然后把各条边的值累加起来 #include<set> #include<map> #include<stack> #include<que 阅读全文
posted @ 2020-02-29 19:09 shuitiangong 阅读(143) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/POJ-1258 题目大意:有一个计算机网络的所有线路都坏了,网络中有n台计算机,现在你可以做两种操作,修理(O)和检测两台计算机是否连通(S),只有修理好的计算机才能连通。连通有个规则,两台计算机的距离不能超过给定的最大距离D(一开始 阅读全文
posted @ 2020-02-29 19:06 shuitiangong 阅读(134) 评论(0) 推荐(0)