最短路
河渔船
这个作者很懒,什么都没留下…
展开
-
P3371最短路
P3371luoguDijkstra算法#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<vector> int maxn=2147483647; int minn; using namespace std; struct H{ int to原创 2016-12-31 17:49:18 · 349 阅读 · 0 评论 -
NOIP 2014 寻找道路
评测传送先反向跑一边bfs,然后将到达不了的点以及它的邻接点删掉。(注意只删一层) 然后再正向跑一遍bfs就可以了。#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<ctime> #include<queue> using namespace std; const int N=100原创 2017-10-18 17:06:26 · 326 阅读 · 0 评论 -
P1821 [USACO07FEB]银牛派对Silver Cow Party
https://www.luogu.org/problem/show?pid=1821大体描述一下题意:一张图,边为有向边,给出一个点 s,求其它点最大的从 x 到 s 和从 s 到 x 的最短路之和。机智的做法:我们可以跑两遍spfa,先跑出 s 到其它点的最短路,在将所有边反过来,再对 s 跑一边spfa, 那么第二遍求的就是其它点到 s 的最短路径。 是不是很机智呢 QAQ#include原创 2017-08-05 20:48:06 · 543 阅读 · 0 评论 -
P1979 [NOIP]华容道
luogu 传送门 搞了小半天,终于搞了出来。 以前写过一个暴力70分的做法(点这里)在70分的基础上: 注意到只有空格在指定棋子旁边才有意义,所以可以O(n^2)记录状态,记录空格在指定棋子的哪个方向。 因为询问数比较多,所以可以预处理出来【指定棋子不动,空格移动到另一边】和【棋子与空格交换位置】两种情况,以移动步数为边权,以状态为点建图。 代码中有解释#include<cstdio原创 2017-08-11 20:08:43 · 593 阅读 · 0 评论 -
P1613 跑路
luogu 传送门倍增吗? 我们定义 f[k][i][j] 表示从点 i 到点 j 能否通过跳2^k(1秒)直接跳到,跳到为1,否则为0; 那么就有如果 f[k-1][i][j]&&f[k-1][i][j] 则f[k][i][j]=1; (想一想就是啊)如果可以一步跳到的,dis[i][j]设为1,其余为大值,跑一边O(n^3)的floyed也可以过啦。注意dis不可设为127,会爆的!#原创 2017-08-16 20:17:46 · 260 阅读 · 0 评论 -
Codevs 1391 伊吹萃香/虫洞
Codevs 传送门 解法:因为这道题中颜色在一直变化,所以要用到一个分层图的做法。 因为颜色来回变,所以我们用0 , 1 来表示当前的时间。当时间是0时,所有点的颜色与起初一样;当时间为1 时,所有点的颜色就与起始时相反了。 用spfa来跑最短路时,交叉松弛, 我们用dis[ ][0] 来松弛dis[ ][1] , 用dis[ ][1]来松弛dis[ ][0] 。 具体处理方法在代码的注原创 2017-08-09 11:04:32 · 385 阅读 · 0 评论 -
P1119 灾后重建(离线Floyed)
https://www.luogu.org/problem/show?pid=1119#sub 弗洛伊德其实是一个三维的dp 以k为中间点时,f[k][i][j]=min(f[k][i][j],f[k-1][i][j]); 这个题询问的时间是有顺序的,所以可以改为两维, floyd算法中枚举的k是中转点,在这道题中就可以按时间顺序把点当作中转点,挨个儿加入图中,并且同时将‘时间恰当的询问’求原创 2017-04-09 10:21:56 · 357 阅读 · 0 评论 -
P1522 牛的旅行
洛谷此题。 调了2+小时。。 终其原因: 1、pow1(x) (x)*(x) ! 2、memset(127) 可能比 1e10 小 exin 至极 , 铭记!#include<iostream> #include<cstring> #include<string> #include<algorithm> #include<queue> #include<vector> #include原创 2017-03-05 10:31:32 · 717 阅读 · 0 评论 -
P1576 最小花费
luogu 1576错误: 第31行 maxd 类型为double,赋成int!解法: 把消耗转化为剩余 , 运用最短路算法dijstra来找一遍最长路#include<iostream> #include<cstring> #include<string> #include<algorithm> #include<queue> #include<vector> #include<cstdio>原创 2017-03-08 15:01:15 · 993 阅读 · 0 评论 -
P1339 热浪
https://www.luogu.org/problem/show?pid=1339Dijkstra最短路#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<queue> #include<vector> #include<algorithm> using namespace std; in原创 2017-03-17 17:22:02 · 482 阅读 · 0 评论 -
P1078 文化之旅
题目链接搜索过的。 不过中间加上一个类似spfa里面的松弛优化。 数据好像比较水。#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using namespace std; const int M=107*107; int n,m,s,t,k; int b[109][原创 2017-11-08 09:13:51 · 332 阅读 · 0 评论