上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 99 下一页

2012年7月11日

POJ 2253 Frogger 二分 + 最短路

摘要: 题意是Freddy Frog 要到 Fiona Frog 的石头上去,现在有些石头可以利用 ,Freddy Frog可以跳跃到这些石头上去,求其跳跃得最小距离。算法:1.求最短路再取其最长得一条边这样的算法时错得,求出来来得不是其跳跃最小距离。2. 正确的做法应该是枚举每一条边, 可以二分枚举,边得长度,即跳跃的距离是线性递增得。。。再带限制条件即每条边的大小要小于等于当前枚举得这条边,求其最短路View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h& 阅读全文

posted @ 2012-07-11 21:28 more think, more gains 阅读(189) 评论(0) 推荐(0) 编辑

POJ 1062 有限制条件的最短路

摘要: 见到得POJ第一道中文题。刚开始算法想错了,交上去果断WA刚开始错误得算法:1. 根据题意建好图2.floyd求传递闭包。3.以1为起点,求一次Dijsktra算法,并记录其路径4.枚举1可以到的点,求出其最小直,并判断该路径上得点是否满足等级限制交上去错了后,才发现算法错了。。1 410000 3 22 13 31000 2 24 13 11000 3 14 2100 4 0这组数据就能完全否认我的算法。并且改不过来。果断换算法。看了discuss,有人说,枚举等级限制,求多次Dijkstra,很暴力,但毫无疑问时正确的算法。正确算法如下:1.建好图2.枚举等级,如果酋长等级是4,限制为2, 阅读全文

posted @ 2012-07-11 19:05 more think, more gains 阅读(260) 评论(0) 推荐(0) 编辑

2012年7月10日

POJ 3259 SPFA

摘要: 这题让我英语太受打击了,题意难懂,读懂题意纸老虎。算法:1.题意本质就是判断是否存在负权回路。2.SPFA,一个点入队大于等于N次,就说明它存在负权回路。View Code #include <stdio.h>#include <string.h>#include <stdlib.h>#include <queue>#include <iostream>using namespace std;#define MAXN 100100struct Edge{ int u, next, val; Edge() {} Edge( int v 阅读全文

posted @ 2012-07-10 18:32 more think, more gains 阅读(269) 评论(0) 推荐(0) 编辑

poj 1860 Currency Exchange SPFA

摘要: 算法:1.SPFA求最长路,dis【】初始直为0,大于改成小于号2.松弛结束后,判断是否大于dis[S] > V, 大于就输出YES, 否则输出NOView Code #include <stdio.h>#include <string.h>#include <stdlib.h>#include <queue>#include <math.h>#include <algorithm>#define MAXN 100100using namespace std;struct Edge{ int u, next; dou 阅读全文

posted @ 2012-07-10 16:00 more think, more gains 阅读(175) 评论(0) 推荐(0) 编辑

Floyd算法

摘要: Floyd算法特点:1.时间复杂度高2.编写简单3.可以处理负权边4.可以用来计算传递闭包View Code #include <stdio.h>#include <string.h>#include <stdlib.h> int N, M, mp[110][110];const int oo = 0x7f7f7f7f;int min( int x, int y){ return x < y ? x : y; }void init( ){ for( int i = 0; i <= 100; i++) for(int j = 0; j <= 阅读全文

posted @ 2012-07-10 09:45 more think, more gains 阅读(205) 评论(0) 推荐(0) 编辑

上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 99 下一页

导航