- 博客(7)
- 资源 (10)
- 收藏
- 关注
原创 Bellman——ford
Dijkstra算法虽然可以算单源最短路,如果对边的权值为正的还没问题,但对边权为负的情况就不好办了,Bellman——ford可以很好滴解决这个个问题,它是对边的松弛。 #includeusing namespace std;#define MAXM 10100int u[MAXM],v[MAXM],w[MAXM],site[MAXM],d[MAXM];int N,M,P,
2012-12-11 17:42:31 635
原创 最短路
城市平乱 首先这道题是最短路问题,单源最短路问题最简单的是Dijkstra算法,多源最短路(即每一对点之间的距离)用Floyed算法,Floyed算法在这里应该会超时的。首先说下Dijkstra算法的大体思路, 第一步:源点进入集合S(U为整个点集),初始化与源点相连的点,没连得点初始化为正无穷,用数组D[i]记录由原点到各点的距离。
2012-12-11 17:25:13 625
原创 最小生成树
布线问题 看了这题,首先能确定的,这是到最小生成树题。知道了最小生成树,那就得用最小生成树算法。求最小生成树的算法常见的有两种:Prime算法,Kruskal算法。这两种算法都是贪心思想,Prime是对点的贪心,Kruskal是对边的贪心。 Prime算法: U表示全部点的集合 第一步:任选一点
2012-12-10 15:31:04 617
原创 A*B Problem
A*B Problem这道题用的是同余定理。(a*b)%m=(a%m*b%m)%m k*(10^m)%9=(k%9*(10^m)%9)%9=k%9;(10^m%9=1)对于任意一个数M=(a1*10^n+a2^10^(n-1)+…………an)M%9=(a1+a2+……an)%9;那么这一题就出来了
2012-12-10 15:22:29 726
原创 青蛙过桥
青蛙过河 这是一道曾经做过的题目,那场比赛做的我超级郁闷,水题也没刷出来,全都坑在这一题上了(谁让咱太水了)。记得第一次见这一题时,我的思路是这样的:1 2 3 4 5 6 7 8……假如它们代表石头,我先算出隔去第一块石头的跳跃距离,然后第二块,依此类推,从中找出最小的,这样就隔去了一块石头,等隔去的石头符合要求了,再找两个石头之间的最大值,这个值就是对青蛙跳跃能力的最小要
2012-12-09 10:33:53 2351
原创 二分图最大匹配
月老的难题 月老的难题,这一题是最大匹配问题,求最大匹配的常见方法有贪心(对出度的贪心),最大流算法(加个源点和汇点),在这是匈牙利算法(寻找增广路,每找到一个增广路,配对加一)这道题我是用匈牙利算法写的(刚学的),下面我说下我对这个算法的理解,在做这题前,我没用过邻接表存过图,就因为我想写下邻接表,这道题一搁搁了好几天。今天第一次写时,还是老习惯用邻接矩阵(菜呀),写好
2012-12-07 13:25:14 588
原创 糖果
糖果这一题其实就是个思路问题,没用什么高级的东西。一看到这一题,我立马想到了背包,我想只要把这些糖果分成两份,两份相差小于等于1,就输出Yes,否则另一种情况。思路很清晰,那很easy了,那就上代码,测数据,测试数据过了,那就提交,果断超时。我想了又想没思路,求助,同学给了些提醒,没理解。那就去群里求助,果然好心人很多这题思路很快出来。现在讲下这题思路首先找出最多的那种糖果(max
2012-12-04 19:47:25 643
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人