
SPFA
文章平均质量分 72
PoPoQQQ
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BZOJ 3627 JLOI2014 路径规划 分层图+堆优化SPFA JLOI2014全AC达成!
题目大意:给定一个无向图,每条边有边权,有些点有点权,一些点是加油站,求一条起点到终点的最短路,使经过有点权的点不超过k次,一管油只能走limit的时间,时间到了就只能到加油站花cost的时间加油 那个红绿灯的计算公式是 red*red/2/(red+green) 考场上很多人没推出来这个挂掉了 我推出来不会写,写了爆搜,26分 限制条件有点多。。。考虑到k 首先我们枚举每一个加油站(起始点原创 2014-09-10 08:56:33 · 2096 阅读 · 0 评论 -
BZOJ 3875 Ahoi2014 骑士游戏 SPFA
题目大意:给定n个怪物,每个怪物可以用魔法直接干掉,或者用物理攻击使其分裂为一些其他怪物,求杀掉1号怪物的最小花销 令f[i]为杀死i号怪物的最小花销,则f[i]=min(k[i],s[i]+Σf[j]) 其中j为i用物理攻击后可以分裂为的怪物 但是直接DP有后效性,因此我们用SPFA来跑这个DP即可 注意如果每次更新一个点之后都重新计算花销会T掉 改成减掉花销的差值就好了 具体写法去看代原创 2015-02-27 14:04:21 · 2291 阅读 · 0 评论 -
BZOJ 1644 Usaco2007 Oct Obstacle Course 障碍训练课 SPFA
题目大意:给定一个有坏点的网格图,从A点走到B点,要求拐弯最少 裸SPFA……在状态那里记录下方向就好了 水水更健康~~ #include #include #include #include #define M 10100 #define P(x,y) ((x)*n-n+(y)) using namespace std; const int dx[]={0,0,1,-1}; con原创 2015-02-23 22:19:11 · 1505 阅读 · 0 评论 -
BZOJ 1097 POI2007 旅游景点atr SPFA+状压DP
题目大意:给定一张图,要求从第一个点出发,按照某个拓扑序遍历2~k+1的所有节点,然后到达n,求最短路径 首先将所有关键点之间的最短路用SPFA求出来 然后状压DP 令f[state][p]表示已经走过的点集为state,将要走到p点的最短路 记忆化搜索就行了- - 标准卡时过- - #include #include #include #include #define M 20原创 2015-01-20 15:11:45 · 1890 阅读 · 0 评论 -
BZOJ 2464 中山市选2009 小明的游戏 SPFA
题目大意:给定一个由'#'和'@'构成的二维矩阵,走到不同的字符需要代价1,求s到t的最短路 签到题+1 这操作符重载要不要写的这么高大上…… #include #include #include #include #define M 510 using namespace std; typedef pair abcd; templatestruct Reader{ T xx[M]原创 2014-11-25 15:56:52 · 1974 阅读 · 0 评论 -
BZOJ 1003 ZJOI2006 物流运输trans 动态规划+SPFA
题目大意:给定一个无向图,运输n天,其中有些天有些点不能走,更换路线代价为k,求代价总和 首先令cost[i][j]为第i天到第j天都走同一路线的最小花销 这个用SPFA处理 然后就是动规的问题了 令f[i]为1~i天的最小花销 则f[i]=min{ f[j]+cost[j+1][i]+k } ( 0 注意m和n别写反 乘天数之前要特判是不是正无穷 #include #include原创 2014-10-16 16:45:18 · 2572 阅读 · 0 评论 -
BZOJ 2346 Baltic 2011 Lamp SPFA
题目大意:给定一个电路板,求改变最少的板子数量使电源与灯泡联通 在对角线之间跑最短路,如果需要改变边权就是1,否则就是0 注意别忘了输出NO SOLUTION #include #include #include #include #define M 510 using namespace std; typedef pair abcd; int m,n; char map[M][M]; ab原创 2014-11-02 14:38:59 · 1366 阅读 · 2 评论 -
BZOJ 1179 APIO2009 ATM Tarjan+堆优化SPFA
题目大意:给定一个有向图,每个点上有正权,求一条从起点出发到任意终点的路径,要求路上的点权和最大(一个点权只能被加一次) 首先Tarjan缩点,易知一个强连通分量内任意一个点权拿到就可以拿到强连通分量内所有的点权 然后这个图就没有环了,SPFA跑最长路即可 边数500W,所以要加堆优化 #include #include #include #include #define M 500500原创 2014-11-02 14:13:19 · 1710 阅读 · 0 评论 -
BZOJ 1050 HAOI2006 旅行comf 动点SPFA
题目大意:给定一个无向图,每条边上有权值,求起点到终点的路径中最长边和最短边的最小比值 随手点开一道居然是动点SPFA的裸题…… 魔法森林都切了这个问题就不大了 我们把边权排序,从大到小加进这个图中,每加进一条边就把边的两个端点加进队列,直接跑SPFA,维护起点到每个点路径上的最长边的最小值,然后用当前边权作为分母更新ans 这样可以保证每次跑出来的都是当前边为最短边时起点到终点的最长边的最原创 2014-10-30 14:21:34 · 2108 阅读 · 2 评论 -
BZOJ 3669 NOI2014 魔法森林 SPFA
题目大意: 给定一个无向图,每条边有两个权值ai和bi,从1走到N,设路径上a权的最大值为A,b权的最大值为B,求A+B的最小值 首先这题如果只有一个权值就是水题无误……但是多了个权值之后我们就要好好考虑一下了 我们对a排序,枚举a,对于每一次枚举求b权最大值的最小值即可 跑M遍SPFA肯定超时无误 网上很多人写了LInk-Cut-Tree维护动态最小生成树 我的LCT没写明白 就去写了S原创 2014-09-01 12:22:23 · 3955 阅读 · 0 评论 -
BZOJ 1295 SCOI2009 最长距离 SPFA+暴力
题目大意:给定一个棋盘,一些格子上有障碍物,可以移除T个障碍物,求移除后所有能互相到达的点对中的最大欧几里得距离 m,n #include #include #include #include #include #define M 40 using namespace std; typedef pair abcd; const int dx[]={0,0,1,-1}; const int dy原创 2014-10-28 17:11:45 · 1421 阅读 · 0 评论 -
BZOJ 2763 JLOI2011 飞行路线 分层图+堆优化SPFA
题目大意:给定一个无向图,求源点到汇点的最短路,其中有k次机会把边权变为0 非常水的分层图。。话说所谓分层图其实就是多一维的SPFA。。。还起了这么个高大上的名字 这题裸SPFA过不去 要加堆优化 我的堆优化一定是写的有毛病 把heap[top--]=heap[0]改成top--就死活过不去 把魔法森林改一下测试了一下结果居然WA了 总之贴代码 #include #include #inc原创 2014-09-09 21:04:45 · 1670 阅读 · 0 评论 -
BZOJ 1880 Sdoi2009 Elaxia的路线 SPFA+拓扑排序
题目大意:给定一张无向图,求s1到t1与s2到t2的最长公共最短路 以s1 t1 s2 t2为源做4次最短路 如果某条有向边满足s到起始点的距离+边长+终点到t的距离=s到t的最短路 那么这条边就可以在s到t的最短路上 我们把所有既在s1到t1的最短路上也在s2到t2的最短路上的有向边都拎出来 容易证明这个图一定没有环 因此拓扑排序求最长链即可 写完发现过不去样例。。。 因为这题题目描原创 2015-03-21 08:58:39 · 2661 阅读 · 0 评论