摘要: 原题链接 考察:最短路 思路: 较水,正反向建图求和. 1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 using namespace std; 5 typedef long long LL; 6 typedef pai 阅读全文
posted @ 2021-05-01 23:40 acmloser 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:最短路+思维 完全不会,废物本废 错误思路: 比较明显的思路就是以每个特殊点为起点,然后Dijkstra,再以每个特殊点为终点求最小值,显而易见地TLE 解法一(官方题解): 由暴力思路延伸来的思路.因为我们只需要知道最小值,而不是特殊点.所以起点和终点是谁无所谓.所以可以将上述的一 阅读全文
posted @ 2021-05-01 22:41 acmloser 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:最短路 思路: 拆点.只有一个状态不足以求出最小花费,需要再加上当前点用了几次免费机会. 坑点: 存在起点与终点经过路线<k的情况,这时候用不到k次机会,所以直接返回0的贪心是错的.... 1 #include <iostream> 2 #include <cstring> 3 #i 阅读全文
posted @ 2021-05-01 16:48 acmloser 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:最短路 思路: 很容易看出t就是一般最短路的权值,快速地打了一遍dijkstra板子结果发现输出结果和样例不一样,那么答案错在哪里呢? 我们调试一下就可以发现,到达中间某点的耗时晚,不一定到达终点就晚,因为到达时间由到达每个点的时间和速度决定. 之前说过最短路可以和dp联系起来,那么 阅读全文
posted @ 2021-05-01 13:32 acmloser 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:最短路+二分 思路: 二分最多的一次收取的费用的最小值,对于每一个二分值跑一遍最短路,最后判断n点是否可达即可.这里的check函数的思路类似二分经典题:搬石头 long long数组的极大值可以初始化为memset(数组,63,size) 1 #include <iostream> 阅读全文
posted @ 2021-05-01 11:40 acmloser 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:最短路 思路: 是模板题.Johnson算法主要用于处理负权边,它可以让Dijkstra算法计算带负权的最短路问题. 具体的做法是:建立虚点0,再让0与每个点连一条边,求出0到每个点的最短路,将(u,v)之间的权值w = w+dist[u]-dist[v]. 这样w一定为正,因为最短 阅读全文
posted @ 2021-05-01 10:33 acmloser 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:floyd+枚举 相差了...想的是直径端点作为加的路左右端点之一...但实际是全部枚举. 思路: 暴力枚举所有没有连通的点,然后对于加的那条路,求左端点的最远距离+右端点的最远距离+加的路线的距离 最后再与剩下的直径求最小值. 1 #include <iostream> 2 #in 阅读全文
posted @ 2021-05-01 01:41 acmloser 阅读(51) 评论(0) 推荐(0) 编辑