
最短路
文章平均质量分 75
nlj1999
这个作者很懒,什么都没留下…
展开
-
1491: [NOI2007]社交网络
乱搞了一个Floyd,一不小心就1A了。。。。。。不能怪我其实想法也很简单,就乘法原理,若i到k再到j为i到j的最短路,则i到j的最短路数为i到k的最短路数与k到j的最短路数的乘积。就酱。#include#include#includeusing namespace std;typedef long long ll;int w[105][105],n,g[105][105];原创 2015-12-09 20:46:00 · 357 阅读 · 0 评论 -
APIO2015 UOJ 110-112
#110. 【APIO2015】Bali Sculptures很像NOI2014的起床困难综合征首先每一位拆开来做从高位到低位贪心,看每一位能不能为0NN#include#include#include#includeusing namespace std;const int inf=1e9;#define rep(i,l,r) for(int i=l;i<=r原创 2016-04-27 19:37:45 · 682 阅读 · 0 评论 -
BZOJ 2304: [Apio2011]寻路
好久不写题解了不劲啊最近被多校虐哭了无聊来水一水APIO的题感觉APIO的题黑科技不是很多啊这题大概不是lower_bound和upper_bound的应用?反正用这两个函数就可以找到每个点四个方向可以到的点了,然后把新找到的这个点加到它所在的矩形的那个线段上去,最后对于每条线段处理一下上面的点跑跑spfa就过了#include#include#include#i原创 2016-04-25 18:43:32 · 920 阅读 · 0 评论 -
LA 3270 - Simplified GSM Network
还是觉得应该先把论文刷完感觉好像掌握了构造维诺图的特殊技巧论文的方法真是奥妙重重但是时间复杂度怎么算,我有点方O(ans)?#include#include#include#include#include#define sqr(x) ((x)*(x))using namespace std;const int inf=1e9;struct point{ dou原创 2016-03-23 08:13:56 · 343 阅读 · 0 评论 -
poj 3613 Cow Relays
这是什么鬼??????floyd+矩阵乘法?????不是很懂你们奶牛,真会玩。问题是求无向图上两点间经过k条边的最短路。定义floyd矩阵乘法(我瞎扯的)为A[i][j]=min(B[i][k]+C[k][j])然后发现这个满足结合律哎。如果B为经过x条边的答案,C为经过y条边的答案,那么A为经过x+y条边的答案好神奇于是就可以直接套矩阵快速幂了。真是6的不行原创 2016-03-21 10:17:03 · 234 阅读 · 0 评论 -
BZOJ 1486: [HNOI2009]最小圈
平均值最小回路二分答案后把每条边的权值都减去答案然后spfa判负圈果断TLE参照09年论文改成DFS版的SPFA,AC#include#include#include#include#includeusing namespace std;const int N=3000+5;const int M=10000+5;const double eps=1e-9;s原创 2016-03-31 11:22:07 · 284 阅读 · 0 评论 -
1027: [JSOI2007]合金
好像湖南集训的时候见过这题(???)首先第三维我吃了,因为可以从前两维算出,就不用管了。然后考虑两种合金的情况。x.a*λ+y.a*μ=z.ax.b*λ+y.b*μ=z.b(λ+μ=1)有木有好熟悉的感觉啊,没错,点在直线上啊。不过这题是点在线段上。然后我们推而广之。就变成了点在多边形内。于是求一个最小的多边形(一定是凸的)使之包含所有点(需要的合金)。原创 2016-01-19 21:33:51 · 720 阅读 · 0 评论 -
POJ 2449 Remmarguts' Date
闲来无事学A*。然后就看到了这个裸的k短路问题。A*算法我觉得嘛就是三个变量,一个思想。首先肯定是估价函数h,然后是代价函数g,最后是f=h+g。思想呢就是每次取出f最小的,然后开始更新周围的节点。对于未到达的节点直接更新,已到达的节点用g值比较一下,更优则更新。而估价函数在一开始就算好了。那么对于k短路问题呢。首先预处理出终点t到每个点的最短路,即为估价函数h。原创 2016-01-19 15:28:12 · 320 阅读 · 0 评论 -
2007: [Noi2010]海拔
第一眼看,卧槽最小割水题,nice秒A。然后交上去。???TLE???!!!!!好吧数据范围我吃了。不过好奇怪为什么之前1001的时候用最小割过了。然后还是乖乖地去学了下对偶图,就是周冬神犇的论文。然后就写了个Dijkstra A了,700多MS,不敢写SPFA了,TLE出阴影了(辛普森积分求阴影面积233333)#include#include#i原创 2015-12-22 19:22:00 · 591 阅读 · 0 评论 -
2143: 飞飞侠
Dijkstra跑了25S差点以为要炸,回头看了一下发现时限是50S。。。。。。。。难得在BZOJ上找到这么水的题。NOIP水平不多说了。#include#include#include#includeusing namespace std;const int inf=1e9;struct Heapnode{ int x,y,d; bool operator<(cons原创 2015-12-22 17:52:20 · 561 阅读 · 0 评论 -
2662: [BeiJing wc2012]冻结
最短路水题。把每个点拆成0,1,2,3......k共k+1个点,表示到达该点时用了几次膜法(雾),然后再求最短路就好了,每次松弛的时候有两种,用或不用膜(划掉)魔法。其实spfa的思想很像动规的。。。。。#include#include#include#includeusing namespace std;const int inf=1e9;struct Edge{int原创 2015-12-17 19:55:43 · 368 阅读 · 0 评论 -
1179: [Apio2009]Atm
6000多MS,差点以为要TLE了。果然SPFA不稳定性太强了(好像有个随机双端队列的方法防数据卡spfa的,不过我懒。。。。。)因为一个路口可以经过多次,所以显然裸的spfa是不可取的。考虑tarjan缩点,然后另建一个图(DAG),spfa乱搞就好了。#include#include#include#include#includeusing namespace std原创 2015-12-15 19:39:12 · 694 阅读 · 0 评论 -
2763: [JLOI2011]飞行路线
拆点,每个点拆成用了ki次免费航线,然后跑一遍Spfa就好了。不过裸Spfa可能会超时(反正我的跑了6000多MS),还是用Dijkstra的好。#include#include#include#includeusing namespace std;const int inf=1e9;struct Edge{int to,next,v;}e[100005];int head[原创 2015-12-11 08:38:35 · 395 阅读 · 0 评论 -
2330: [SCOI2011]糖果
差分约束系统。特殊数据害人不浅。。。。。。。。Spfa可能TLE,最好用Dijkstra。#include#include#include#includeusing namespace std;struct Edge{int to,next,v;}e[400005];int head[100005],d[100005],cnt[100005],edge,n,k;bool原创 2015-12-10 11:54:20 · 319 阅读 · 0 评论 -
1295: [SCOI2009]最长距离
暴力SPFA。若该点有一个障碍物,则经过该点后距离+1,对于所有距当前起点的距离小于T的点,最大距离(欧几里得距离)。即得答案。#include#include#include#include#includeusing namespace std;const int dx[4]={0,1,0,-1};const int dy[4]={1,0,-1,0};int mp[3原创 2015-12-09 21:43:47 · 380 阅读 · 0 评论 -
BZOJ 3575: [Hnoi2014]道路堵塞
首先我们玩一下会发现删掉一条路之后的最短路一定是原来最短路的一段且仅一段换成了一条非最短路每一次删边,我们从边的起点出发进行spfa,当spfa到终点往后的最短路上的点时更新一下答案(的集合)对于答案的集合呢,我们维护以每个点为终点的非最短路的总的长度(即1-p最短路+某个点->p的非最短路+p->n的最短路),这个搞个线段树就好了然后处理完一条边之后,以这条边的终点为终点的答案全都非原创 2016-04-11 20:18:47 · 1086 阅读 · 0 评论