最短路
ZBoWing
这个作者很懒,什么都没留下…
展开
-
最短路及其延伸
最短图想必最短路大家都很熟悉,那么我们就先对最短路两个重要的算法总结一下;PrimPrim其实就是以DP为基础的最短路算法,通过两个节点的中介转折点来更新两点之间的最短路。从而解决任意两点的最短路,时间复杂度是O(n^3);具体实现过程如下:mp[Maxn][Maxn];//两点之间的最短路 for(int k=1;k<=n;++k)//k枚举状态所以必须在外层循环 for(...原创 2019-07-13 09:30:59 · 156 阅读 · 0 评论 -
题解【BZOJ1003】物流运输
这道题的考察很全面,考到了最短路和DP的结合,非常灵活,是一道很好的题;具体思路就是提前预处理出第i天到第j天都能走的最短路;然后进行DP就可以了,用dp【i】表示前i天运输所需的最少费用;代码如下:#include<bits/stdc++.h> using namespace std;struct data{int next,to,w;}e[801];int n...原创 2019-08-13 19:00:26 · 134 阅读 · 0 评论 -
【题解】【Luogu1703最优贸易】最短路
我们在做这道题时正反图要同时建立,然后从起点出发,跑一遍DJ处理出权值最小的点F[x],再反着跑一遍处理出权值最大的点,D[x]。再枚举每个点,用D[x]-F[x]跟新答案即可。#include<bits/stdc++.h>#define maxn 510000using namespace std;priority_queue< pair < int , ...原创 2019-09-06 21:45:59 · 165 阅读 · 0 评论 -
【题解】【luogu2939】分层图最短路
分层图分层图是针对于对图的边权有强制性修改的一类问题(修改次数较少);它的思想其实就是拆点。以上面这道题为例:将k条边的权值变为0;将原图建为k层每一个层内之间的边权不变,跨层的边权设为0;这样就实现了分层图;再在分层图上跑一边最短路就可以了;代码如下:#include<bits/stdc++.h>using namespace std;const int ...原创 2019-10-01 11:04:55 · 203 阅读 · 1 评论