
最短路/K短路
jzq233jzq
这个作者很懒,什么都没留下…
展开
-
Floyd+最大流——Luogu2402 奶牛隐藏
题面:Luogu2402 二分+最大流 看到这种题嘛直接做啊,首先Floyd求出两两之间最短路,然后我们考虑二分这个时间TT,接着建图 这个图啊首先把每个点拆成牛和棚,超级源点ss向每个点的牛连流量为牛数的边,每个点的棚向超级汇点tt连流量为容纳数的边,最后考虑牛到棚的边,如果点ii的牛到点jj的棚最短路<=T<=T,那么就连一条流量无限的边 最后用最大流判断一下流量是否是奶牛数就好了#in原创 2017-08-03 19:21:04 · 207 阅读 · 0 评论 -
最短路——BZOJ1656 [Usaco2006 Jan] The Grove 树木
http://www.lydsy.com/JudgeOnline/problem.php?id=1656 题目可能没讲清楚(或者没翻译清楚),这个树林是一个连通块 因为要绕树林一圈求最短路,我们可以任意取一棵树,然后向下画一条射线表明一条关键的分界线 每个点记录两个状态,1表示走过这条分界线一次,0表示没走过这条分界线 然后分别记录最短路 走过了才有可能绕原创 2017-03-29 22:25:02 · 628 阅读 · 0 评论 -
K短路——BZOJ1975/Luogu2483 [SDOI2010]魔法猪学院
http://www.lydsy.com/JudgeOnline/problem.php?id=1975 https://daniu.luogu.org/problem/show?pid=2483 首先我们要想到把这题转化成求k短路 这个怎么说呢。。。先看题目一句话 iPig 的总能量是有限的,所以最多能够转换的样本数一定是一个有限数既然要求每种转换方式都不相同,那就不可能是最短路然后贪原创 2017-03-31 09:31:12 · 1253 阅读 · 0 评论 -
SPFA——Luogu1073 [NOIP2009]最优贸易
https://www.luogu.org/problem/show?pid=1073 首先能够买进卖出的地点一定与起点和终点连通 我们可以从起点正向SPFA找出在可以走到的范围内能够买进的最小代价,然后从终点反向BFS找出哪些点能够走到终点,最后的答案是:max(本地代价[i]-买进最小代价[i])(i能够走到终点)然后SPFA模板改一下好了#include<bits/stdc++.h>us原创 2017-03-31 15:59:51 · 426 阅读 · 0 评论 -
图论——BZOJ4239 巴士走读
http://www.lydsy.com/JudgeOnline/problem.php?id=4239 我们的4.12模拟赛T3 我写了很久又调了很久的spfa最后被硬刚到80分再也上不去了。。。 思路是把每辆车看做点,如果一辆车能换乘另一辆车就连上一条边 代码就不贴了吧(反正也看不懂) 网上看题解发现一种非常神奇的做法 我们维护到达每个点的最迟出发时间d和乘上每辆车的最迟出发时间di原创 2017-04-13 20:22:21 · 680 阅读 · 0 评论 -
图论矩乘——Luogu2233 [HNOI2002] 公交车路线
https://www.luogu.org/problem/show?pid=2233 这个矩阵和floyd很像,可以说就是floyd吧 就是说每条公交车路线为初始矩阵啦~(相邻的点,不过5不要考虑因为到达5停止了的) 他需要n次从1到5,那么矩阵快速幂n-1次就好了 注意是n-1次!!!坑点 输出1到5的即可#include<bits/stdc++.h>using namespace原创 2017-04-18 08:32:07 · 822 阅读 · 0 评论 -
最短路+离散化——BZOJ1967/Luogu2537 [AHOI2005]CROSS 穿越磁场
题面:BZOJ1967 Luogu2537 考虑到坐标范围非常大,但是矩阵数目很少 所以考虑离散化(离散化这个过程真的恶心) 离散化的时候要注意把矩形的边左右或者上下都给留下来,这样才能给机器人跑路 离散化之后呢跑一遍spfa,注意边界处理 就是说不能连续在一条边界上面走 至于两个矩形的边交叉处不必担心,因为往交叉处走的话必定不是最优的 最后输出终点的最短路径即可#include<io原创 2017-05-16 13:35:27 · 384 阅读 · 0 评论 -
构图(+BFS)——BZOJ2541/Luogu3716 [CTSC2000]冰原探险
题面:Luogu3716 BZOJ2541 无限烧脑预处理建图系列,同时也是我攻下的CTSC第一题! 只要把图能建得出来就Accepted了 所以只说建图(最后的bfs有什么好说的。。。) 我们把冰山拆成四个点,冰山的每一边是一个点 然后我们暴力对每一个点(也就是冰山的边)往上下左右找最近的能撞的冰山(或者直接掉进洞里),然后连上有向边(注意有向边!!!) 当然啦,每一条边要么上下方向要原创 2017-06-06 10:08:41 · 389 阅读 · 0 评论 -
最大流——BZOJ1189/Luogu3191 [HNOI2007]紧急疏散evacuate
题面:BZOJ1189 Luogu3191 首先我们预处理出每个空地到每扇门的最短时间 然后我们二分时间t,然后把每扇门拆成t个点 接下来建图:超级原点->每块空地(流1),每扇门的每一个时刻->超级汇点(流1) 然后对于每块空地,枚举能够在t时间内到达的门,连上边(流1,空地->门(对应的最短时间那个时刻点)) 然后等待的问题只要每扇门的某一时刻点向下一时刻点连上就行了(流INF) 然原创 2017-06-13 13:57:33 · 351 阅读 · 0 评论 -
图论矩乘——BZOJ1297 [SCOI2009]迷路
题面:BZOJ1297 又是一题我称之为“图论矩乘”的好题 因为每条边的边权只有1~9,所以我们考虑拆点 把一个点一分为十,方便记录距离 比如从a到b有一条边权为c的边 那么我们先把a里的距离1~c的点全部连上1,然后将a里的c和b里的1连上一条边 这样就做到矩阵里所有点的权值都是1了 然后就可以矩阵快速幂优化了 最后输出答案的时候还要再搞一下起点和终点#include<bits/stdc++.h原创 2017-05-02 14:50:13 · 392 阅读 · 0 评论 -
图论矩乘——BZOJ1706/Luogu2886 [USACO07NOV]Cow Relays
题面:Luogu2886 BZOJ1706 这题是图论的矩阵乘法吧。。。 我们把矩阵快速幂的思想和floyd结合一下 这里的矩阵乘法应该来说已经不算矩乘了。。。 确切来说是把乘法部分换成了floyd 然后矩乘n次(和公交车路线差不多) 计算最短路即为答案 然后这题需要离散化一下(我不知道不离散化能不能过。。。)#include<bits/stdc++.h>using namespace std;原创 2017-05-02 13:43:26 · 473 阅读 · 0 评论 -
最短路+DP——BZOJ1003/Luogu1772 [ZJOI2006]物流运输
http://www.lydsy.com/JudgeOnline/problem.php?id=1003 https://www.luogu.org/problem/show?pid=1772#sub 这题一开始,我乍一看,不会做啊(好吧其实这题还是很水的) luogu的题目标签说是DP啊,还有最短路 其实就是这样做的呀(后来发现真的很水) 因为在某一区间段时间内有码头会暂时关闭,所以我们原创 2017-03-13 09:24:03 · 353 阅读 · 0 评论