上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1151题目大意:考虑一个城市的街道都是单向的并且所有的道路都是从一个十字路口到另一个十字路口。从一个起点出发,沿着路走你永远都不可能回到起点,也就是说道路没有环。对于这样的一个假设,你的任务是编写一个程序,它可以找到让最小数量的伞兵,他们可以沿着路走经过所有的十字路口。而且一个十字路口不能被两个,或两个以上的人经过。每一个伞兵降落在一个十字路口,可以访问其他城镇街道后的十字路口。没有限制的起动交叉对于每个伞兵。解题思路:因为街道是有向的,而且不存在环,要到达所有的顶点我们可以转换为二分图的最小路径覆 阅读全文
posted @ 2012-09-07 21:36 一生挚爱 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 【基本概念】:二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。最大匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配. 选择这样的边数最大的子集称为图的最大匹配问题,如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹. 阅读全文
posted @ 2012-09-07 20:33 一生挚爱 阅读(134) 评论(0) 推荐(0) 编辑
摘要: //二分图的最小顶点覆盖数=最大匹配数//本题就是求最小顶点覆盖数的。#include#include#define maxn 105int n,m,k;bool map[maxn][maxn],mark1[maxn];int mark[maxn];bool dfs(int v){ for(int i = 1; i <= m; i++) { if(mark1[i] || !map[v][i]) continue; mark1[i] = true; if(!mark[i] || dfs(mark[i])) { mark[i] = v; return true; } } re... 阅读全文
posted @ 2012-09-07 16:55 一生挚爱 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5297 Accepted Submission(s): 2341Problem DescriptionRPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Gras 阅读全文
posted @ 2012-09-07 16:07 一生挚爱 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3986题意:给出一个无向图,Harry Potter的目的是从1到n,而Voldemort为了阻止他,使用魔法毁掉了图中的一条边,问最坏情况下Harry要走的最短路是多少。注意:两点间可以能存在多条路,而且路是双向的,找到最短路后枚举边,求的最短路中最长的那条即为所求,#include#include#includeusing namespace std;const int maxn = 1005;const int INF = 1que;void spfa(bool flg){//求起点到终点的最 阅读全文
posted @ 2012-09-06 19:58 一生挚爱 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 题目地址:题解:题目意思为从起点到终点的最短路中有一条路不能通过了,求到从起点到终点的最短距离。可以先找出从起点到终点的最短距离,并将路径保存下来,然后枚举最短路径中的所有路径,求出从起点到终点的最短路径中最长的一条。#include#include#includeusing namespace std;const int maxn = 1005;const int INF = 200000000;struct node{ int v,t; struct node *next;}*head[maxn],edge[maxn*maxn];int n,m,dis[maxn],per[maxn];bo 阅读全文
posted @ 2012-09-06 15:40 一生挚爱 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题目地址: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) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页