摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3790最短路问题,因为结果会超int所以最终结果要用__int64位保存。当距离相等的时候,去费用小的路走。#include#includeusing namespace std;#define INF (1v = end; p->d = d; p->cost = cost; p->next = head[start]; head[start] = p++;}void spfa(int start){ int i; for(i = 1; i Q; Q.pus... 阅读全文
posted @ 2012-09-05 21:58 一生挚爱 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2544简单最短路问题#include#define INF 1 dis[i] + map[i][j]) dis[j] = dis[i] + map[i][j]; } } } for(i = 1; i dis[i] + map[i][j]) return false; } return true;}int main(){ int i,j,a,b,c; ... 阅读全文
posted @ 2012-09-05 21:54 一生挚爱 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1548本题为简单最短路,构图方法为如果在第i层可以上升Ki层则增加边i - >(i+Ki) 否则不加边,如果可以下降Ki层则增加边i-> (i - Ki)#include#include#includeusing namespace std;#define maxn 205#define INF (1que; que.push(start); while(!que.empty()) { int now = que.front(); vis[now] = true; que.pop(); 阅读全文
posted @ 2012-09-05 21:51 一生挚爱 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 首先,为了说话方便,列出一些术语:在启发式搜索中,对于每个状态 x,启发函数 f(x) 通常是这样的形式:f(x) = g(x) + h(x)其中 g(x) 是从初始状态走到 x 所花的代价;h(x) 是从 x 走到目标状态所需要的代价的估计值。相对于 h(x),还有一个概念叫 h*(x),表示从 x 走到目标状态所需要的实际最小代价(当然,这个值有时我们是事先无法知道的)。如果在你的启发函数里,能保证 h(x) x.v 就称作 Px 的偏离边(deviation edge); Px 上从 x.pre 到 t 的这一段子路径就称为 Px 的偏离路径(deviation path)。为什么叫作. 阅读全文
posted @ 2012-09-05 15:16 一生挚爱 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1869解题思路:本题为简单最短路,只需要求出两两间的距离,如果存在一个两两间距离大于7的点的话则输出No如果两两间的距离都小于或等于7则输出Yes#include#define INF (1 map[i][k] + map[k][j]) map[i][j] = map[i][k] + map[k][j];}int main(){ int i,j,a,b; while(scanf("%d%d",&n,&m)!= EOF) { for(i = 0; i 7) flg 阅读全文
posted @ 2012-09-05 11:14 一生挚爱 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3117解题思路:很显然费波纳数的后四位存在周期,通过测试可以发现后四位的周期为15000,所以后四位可以打表得出,前四位是参考了别人的思路才做出来的。因为费波纳数f[n] = 1/sqrt(5)(((1+sqrt(5))/2)^n+((1-sqrt(5))/2)^n).很显然当n非常大的时候(1-sqrt(5))/2)^n非常的小以至于可以忽略,假设F[n]可以表示成 t * 10^k(t是一个小数),那么对于F[n]取对数log10,答案就为log10 t + K,此时很明显log10 t#inc 阅读全文
posted @ 2012-09-05 10:24 一生挚爱 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2962方法一:使用spfa最短路算法,二分查找最大高度。运行结果:2962140MS612K1790 BC++#include#include#includeusing namespace std;#define INF (1Q; Q.push(start); while( !Q.empty() ) { int now = Q.front(); Q.pop(); vis[now] = false; for(node *p = head[now] ; p ; p = p->next) { ... 阅读全文
posted @ 2012-09-05 08:40 一生挚爱 阅读(159) 评论(0) 推荐(0) 编辑