![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
Sirius_Ren
▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇自己刮~~~
展开
-
POJ 3159 差分约束
思路: 很普通很普通的一道差分约束。。 就是Dijkstra的时候要进行堆优化// by SiriusRen#include <queue>#include <cstdio>#define N 150050using namespace std;int n,m,xx,yy,zz,tot=1;int first[30050],next[N],w[N],v[N],dis[30050]原创 2016-07-28 19:14:42 · 262 阅读 · 0 评论 -
BZOJ 1598 第k短路
思路: 先反向建图 Dijkstra一遍 求出h数组 再正向建图 A_star一遍 搞定//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define int long long#define N 10050i原创 2016-11-07 08:46:58 · 977 阅读 · 0 评论 -
POJ 3037 SPFA
题意: 思路: 我们可以发现 到每个点的速度是一样的 那这就成水题了….裸的SPFA跑一哈 搞定//By SiriusRen#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int v,原创 2016-10-28 09:30:51 · 623 阅读 · 0 评论 -
BZOJ 4144 Dijkstra+Kruskal+倍增LCA
思路: 先把所有的加油站 push进按weight排序的优先队列里 对于每个不是加油站的点 找到到它的点的最短路以及它来源的加油站 如果x和y有边 且x和y加油站的来源不一样 则它可以连边跑一边Kruskal倍增查一下 搞定了(注意图可能不连通)//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#原创 2016-11-08 23:29:23 · 874 阅读 · 0 评论 -
POJ 2394 Dijkstra
题意: 思路: 裸的Dijkstra 爆敲一发模板//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 2222int f,p,c,m,xx,yy,zz,w[N],v[N],next[N],fi原创 2016-10-28 13:44:03 · 748 阅读 · 0 评论 -
POJ 3169 差分约束
题意: 好久没做差分约束了,,, 看到这道题第一想法是贪心…………………………思路: 差分约束 从i到i+1的距离>=0 add(i+1,i,0)对于互相讨厌的牛从u到v的距离>=d add(v,u,-d)对于互相喜欢的牛从u到v的距离<=d add(u,v,d)跑SPFA就好了顺便判判dis 和入队次数//By SiriusRen#include <q原创 2016-10-30 13:16:11 · 506 阅读 · 0 评论 -
POJ 2138 最长路
思路: 如果j能由i得到 则i向j连一条边答案就是最长路的末节点所代表的string//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 3005int n,first[N],next[N*N],v[N*N],tot=1,t,head,ta原创 2016-10-30 23:06:25 · 324 阅读 · 0 评论 -
POJ 2039 Floyd
句意理解题 解释输入好啦: 第一行n个数 m场电影 随后m行 每行的第一个数 代表 有k奶牛在这个电影中出现过 随后k个数 是奶牛的编号如果两头奶牛在同一个电影中出现过 相互度为1 奶牛们的相互度可以累加 (这句话的意思是 :请用Floyd解此题)输出最少的一头奶牛的相互度之和 *100/(n-1)//By SiriusRen#include <cstdio>#i原创 2016-10-31 08:49:12 · 319 阅读 · 0 评论 -
POJ 2374 线段树建图+Dijkstra
题意: 思路: 线段树+Dijkstra(要堆优化的)线段树要支持打标记 一个栅栏 拆成两个点 :左和右 新加一个栅栏的时候 看看左端点有没有被覆盖过 如果有的话 就分别从覆盖的那条线段的左右向当前的左端点连一条边权为距离的边右端点同理 跑一遍Dijkstra 就好啦复杂度:O(nlogn)//By SiriusRen#include <queue>#include <c原创 2016-10-31 15:02:24 · 694 阅读 · 0 评论 -
BZOJ 1579 道路升级 Dijkstra
思路: 这道题 不能把所有边都建出来 会MLE的!!! oh gosh 其实不建所有的边 用的时候再调就行了….(也没啥区别)//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 100050int原创 2016-11-02 16:14:47 · 591 阅读 · 0 评论 -
BZOJ 1001 平面图与对偶图的转化 最短路Or最大流
思路: 1.按照题意求最小割 转换成最大流用Dinic解 2. 转换成对偶图 求最短路 Dinic://By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 1100000int n,m,first[N],ne原创 2016-12-26 08:55:23 · 764 阅读 · 0 评论 -
POJ 3271 BFS (大坑)
被某人拉进了坑 完完全全被坑一天的题…… 题意: 正解思路: 先把每一个点搜一遍 预处理出它能在一步之内到的所有点 并连边 然后用一个类似DP的东西把方案数加起来就搞定了 (其实 也不是很难)但是 我为什么会挂呢 首先 我想偷个懒,想少写一个BFS 就直接按照原来的边搜过去了 当然错了 查了一上午 (对着数据查 小数据竟然全水过去了!!!)下午颓了会儿原创 2016-10-14 00:25:56 · 683 阅读 · 0 评论 -
TYVJ1415 差分约束
思路: i–>i+1连一条边权为0的边 i–>i-1连一条边权为-1的边 start-1 —>end 连一条边权为w的边求0—>n的最长路即可//By SiriusRen #include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 22原创 2016-08-29 16:40:56 · 797 阅读 · 0 评论 -
POJ 3013 Dijkstra
从1节点最短路,,然后再乘一下权值就OK了//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 132000long long d[N];int n,m,first[N],next[N],v[N],w[N],t原创 2016-09-25 15:52:00 · 342 阅读 · 0 评论 -
POJ 1201 差分约束+SPFA
差分约束,难在建图。(我是不会告诉你我刚学会SPFA的。。。)把每个区间的ai–>bi连一条长度为ci的边。 k–>k+1连一条长度为0的边。 k+1–>k连一条长度为-1的边。 求最长路即可。// by SiriusRen#include <queue>#include <cstdio>#include <algorithm>#define N 55555using namespa原创 2016-08-03 12:59:47 · 242 阅读 · 0 评论 -
POJ 1062 Dijkstra
POJ少有的中文题 (很久之前就想写来着,但是原来不会啊…..) 思路: 首先我们可以新建一个点,从这个点向每个物品连一条权值为这个物品价值的边 (这样就把点权转化成了边权对吧……) 我们已经知道了一个物品的替代品是啥,那么就可以从每个替代品向这个物品连一条边权为替代品价值的边。 是不是很有道理。。。随后枚举区间 (区间里得包括酋长的地位)每次枚举从新建的点向一号点跑一遍Dijkst原创 2016-08-28 21:12:18 · 714 阅读 · 0 评论 -
POJ 3268 Dijkstra+priority_queue或SPFA
思路:正向建边,一遍Dijkstra,反向建边,再一遍Dijkstra。ans加在一起输出最大值。// by SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 1005int n,m,X,tot=0,maxx=0,fi原创 2016-08-07 11:55:02 · 696 阅读 · 0 评论 -
POJ 3259 Wormholes SPFA判负环
思路:SPFA判负环 数组不要开太小……(后面附一组测试数组)// by SiriusRen#include <queue>#include <cstdio>#include <cstring>using namespace std;#define N 13555int n,cases,m,W,xx,yy,zz,tot,first[N],v[N],w[N],next[N],d[N],i原创 2016-08-07 12:36:18 · 289 阅读 · 1 评论 -
POJ 2502 Dijkstra OR spfa
思路:建完了图就是模板水题了 …..但是建图很坑。首先要把出发点向地铁站&终点 连一条边 地铁站之间要连无向边 地铁站向终点连一条边以上的边权要*0.006两个地铁站之间要连无向边 边权*0.0015//By SiriusRen#include <queue>#include <cmath>#include <cstdio>#include <cstring>#include <a原创 2016-08-29 10:39:09 · 699 阅读 · 0 评论 -
POJ 1364 差分约束
思路: 把所有“>”变成“≥” 把所有“<”变成“≤”(加一减一就好了)然后我们发现:图不一定连通!!怎么办呢 对于每一个连通块SPFA就好了嘛……//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>#define N 111using namespace std原创 2016-08-30 14:52:18 · 542 阅读 · 0 评论 -
POJ 1275 差分约束
一堆化不等式,,,,,, 懒得写了。。。 请看mars_ch的blog…..戳戳戳戳戳还是她给我找的错……….//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int first[25],next[666],v[666],w[原创 2016-08-30 10:49:52 · 394 阅读 · 0 评论 -
POJ 3275 两种做法
题意: 思路: 1.Floyd传递闭包 n^3/32 勉强卡过去吧…… 2.用邻接表搞Floyd 也是勉强卡过去…… 最后用n*(n-1)-矩阵中为1的个数就OK了传递闭包://By SiriusRem#include <bitset>#include <cstdio>#include <algorithm>using namespace std;bitset<1005原创 2016-10-10 23:06:59 · 867 阅读 · 1 评论 -
POJ 3662 二分+Dijkstra
题意: 思路: 二分+Disjktra二分一个值 如果某条边的边权比它小,则连上边权为0的边,否则连上边权为1的边最后的d[n]就是最小要免费连接多少电话线。//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#def原创 2016-09-25 14:23:19 · 734 阅读 · 0 评论 -
POJ 2449 第k短路 Dijkstra+A*
这道题我拖了半年,,,终于写出来了 思路: 先反向建边 从终点做一次最短路 —>这是估价函数h(x) 再正常建边,从起点搜一遍 (priority_queue(h(x)+g(x))) g(x)是已经走过的。。思路比较简单,,, 但是我总是MLE原因:写挫了……刷了三页… …//By SiriusRen#include <queue>#include <cstdio>#in原创 2016-09-25 15:50:28 · 443 阅读 · 0 评论 -
BZOJ 3931 Dijkstra+网络流
思路: (我能说按照题意模拟么)用long long inf 要开大…….//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define int long long#define N 1017#define M 999原创 2017-01-04 16:19:26 · 695 阅读 · 0 评论