SPFA
HT008_123
家人们点点关注叭
展开
-
杂务安排
题目描述 John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗乳房以及一些其它工作。尽早将所有杂务完成是必要的,因为这样才有更多时间挤出更多的牛奶。当然,有些杂务必须在另一些杂务完成的情况下才能进行。比如:只有将奶牛赶进牛棚才能开始为它清洗乳房,还有在未给奶牛清洗乳房之前不能挤奶。我们把这些工作称为完成本项工作原创 2017-04-16 08:16:52 · 464 阅读 · 0 评论 -
[AOIP 2015] 雅加达的摩天楼
题目描述:qwq…题目分析:其实就是个最短路啊,然后发现建的边最多会有N2N2N^2条… 所以我们考虑用分块的思想来优化建图。 Pi>sqrt(n),暴力加入每一条边,每次最多sqrt(n)条边。 Pi≤sqrt(n),对于每个点添加sqrt(n)个辅助点,这里可以理解成一栋楼有许多层,每一层一步能走的范围都不同,然后每一层分别连边,每一层到楼底连边。对于一只doge,从楼...原创 2018-05-12 11:35:55 · 410 阅读 · 0 评论 -
[AHOI2014/JSOI2014] 骑士游戏
题目描述:雾。题目分析:先写出 DP 方程 f[i]=min(k[i],s[i]+∑Rj=1f[toj])f[i]=min(k[i],s[i]+∑j=1Rf[toj])f[i]=min(k[i],s[i]+\sum_{j=1}^{R}f[to_j]) 也就是可以直接用膜法攻击杀死怪兽,或者是普通攻击杀死怪兽以后杀死产生的新怪兽 暴力转移肯定不行 观察一下上面的式子 若f[...原创 2018-03-28 10:14:08 · 388 阅读 · 0 评论 -
[SDOI2009] Elaxia的路线
题目描述:求两个起终点的最短路的最长公共路径题目分析:我们跑4遍SPFA,分别求出四个点到所有点的最短路. 枚举每条边 然后判断这条边是否都满足两者的最短路 最后做一下拓扑求一下最长路径即可题目链接:Luogu 2149Ac 代码:// luogu-judger-enable-o2#include <iostream>#include...原创 2018-03-27 21:42:15 · 196 阅读 · 0 评论 -
[Luogu P1342] 请柬
传送门题目分析:正建图,统计,反建图,统计。 没了。#include #include #include #include #define il inline#define cnt Cnt[f]using namespace std;const int maxm=1100000;int inf;int head[2][maxm],to[2][maxm*2],原创 2018-01-20 20:13:30 · 269 阅读 · 0 评论 -
[SDOI2010]魔法猪学院
题目分析:总的花费一定,让我们以不同的方式到达终点,很明显是一个K短路问题,A*+SPFA可过。 内存玄学。 更新一发 洛谷加了组 Hack 数据 MMP!题目链接:传送门代码:// luogu-judger-enable-o2#include <cstdio>#include <iostream>#include <queue...原创 2018-01-30 20:37:00 · 383 阅读 · 0 评论 -
NOIP2017 D1 T3 逛公园
NOIP2017中一道非常有争议的题目。 因为多组数据的庞大数据量+CCF老爷机器的评测速度导致很多人写了正确解法却只得了70分。 不过这一切都跟我没关系 ~~因为我考试的时候邻接链表打错了个变量爆零了~~ 成功变成SB选手。讲讲这题的做法。 其实状态很好想。 DP转移f[i][k] 到点i的距离比最短路多k时的方案数 至于最短路可以用SPFA求出来。 转移的话 DP[i][k]=原创 2018-01-04 10:16:35 · 438 阅读 · 0 评论 -
Dwarf tower
SPFA松弛操作,注意不要记录一个cost边权,用固定的dis计算即可 注意全部入队#include <cstdio>#include <iostream>#include <queue>using namespace std;int dis[11000];int head[11000],net[210000],to[210000],p[210000],cnt;bool f[11000原创 2017-08-22 10:20:19 · 369 阅读 · 0 评论 -
华容道
70分的做法不说了,见前面的BLOG http://blog.csdn.net/qq_35914587/article/details/76168543 说一下满分的做法,我们先处理出move[i][j][k][l]数组表示i,j这个点在k方向上有个白格子,这个点要到l方向所需要的最小步数,利用这个数组建图,然后用BFS拓展出空格子到初始位置四个方向的最短路径,作为dis的初始值,然后按照SPF原创 2017-08-11 19:16:29 · 501 阅读 · 0 评论 -
Code vs 1391 伊吹萃香(虫洞)
QAQ 思路:SPFA+分层图 dis[i][j]表示第i个节点在第j个时间的最短路径 可以看出j并不需要全部的记下来,我们只需要用0,1来记录时间就行了 同理vis数组同样两维 根据题目要求拓展的花费,注意处理等待的情况 优化,双向队列,如果当前拓展出的节点dis比队首小,就将这个节点放在队首,这样就可以更快的拓展出最终的状态辣#include<iostream>#include<c原创 2017-08-09 10:56:08 · 392 阅读 · 0 评论 -
工作安排(待编辑)
#include <iostream> #include <queue> #include <string.h> #include <cstdio>#define MAX 2010 #define MAXE 600010using namespace std; int maxData = 0x7fffffff; queue<int> dl;int head[MAX],co原创 2017-05-05 15:41:17 · 392 阅读 · 0 评论 -
[APIO 2017] 商旅
题目描述:qwq…题目分析:先预处理出两个摊点之间能够获得的最大收益,记为 val[i][j] 在获得最大收益的同时肯定是走最短路最优 弗洛伊德处理出任意两点之间的最短路 那么问题就变成了求图上的一个最大比率环 即 求max(∑val∑cost)max(∑val∑cost)max(\frac{\sum val}{\sum cost}) 01分数规划+SPFA判断正环即可...原创 2018-05-07 09:53:46 · 361 阅读 · 0 评论