2011年9月2日

poj-1258 Agri-Net **

摘要: /* * 纯粹的最短路 prim 用 二叉堆 实现 * * 用二叉堆实现优先级队列 比较麻烦~ 后面附上直接用数组的 * */#include <cstdio>#include <cstring>usingnamespace std;constint maxN =100+5;constint inf =100000000;int n, G[maxN][maxN], len; //len:二叉堆数组的长度int ans;bool S[maxN];int d[maxN], vertex[maxN], reverse[maxN]; //二叉堆中节点的域int inline l 阅读全文

posted @ 2011-09-02 10:26 龙豆 阅读(258) 评论(0) 推荐(0)

poj-2421 Constructing Roads *

摘要: /* * 蛮水的一道MST Kruskal, 链表实现 * * 预处理: * 根据已有的边,把相应的集合合并。。再Kruskal * * 另一种方法: * 把已有边的权值改为0 * */#include <cstdio>#include <algorithm>using namespace std;const int maxN = 100 + 5;int n, totEdgeNum, G[maxN][maxN], q, ans;struct SEdge{ int w, u, v;};SEdge edge[maxN * maxN];struct SNode{ int... 阅读全文

posted @ 2011-09-02 10:16 龙豆 阅读(271) 评论(0) 推荐(0)

2011年9月1日

poj-1789 Truck History *

摘要: /* * 很直接的最小生成树 * * 版本一: Kruskal, 链表实现 * */#include <cstdio>#include <algorithm>using namespace std;const int maxN = 2000 + 5;const int letterNum = 7;int n, totEdgeNum, ans;char code[maxN][letterNum + 2];struct SEdge{ //边 int w, u, v;};SEdge edge[maxN * maxN];struct SNode{ //... 阅读全文

posted @ 2011-09-01 14:12 龙豆 阅读(316) 评论(0) 推荐(0)

2011年8月14日

最大流的算法小结 Algorithm for Maximum Flow

摘要: 【转】————————————————————————————算法名称 复杂度概要增广路方法 Augmenting path method (Ford Fulkerson method)一般增广路算法Labeling algorithmO(nmU)在残留网络中,每次任意找一条增广路径增广。容量缩放增广路算法 Capacity scaling algorithmO(nm logU)在残留网络中,每次找一条有最大可增广容量和的增广路径增广,即残留网络中源到汇的最长路。最短增广路算法 Shortest augmenting path algorithm (Edmonds Karp algorithm 阅读全文

posted @ 2011-08-14 16:47 龙豆 阅读(1117) 评论(0) 推荐(0)

2011年8月9日

关于最小生成树的一些理解

摘要: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 【转】(1) 定义在一棵树里添加一条边,并在产生的圈里删除一条边叫做一次操作。(也就是说换掉一条边并且保证结果是树),则树A和B是无向图的两个生成树,则A可以通过若干次操作变成B。 证:把树看作边的集合,如果B中有一条A没有的边,则把这条边加到A上,A产生一个圈中至少有一条是B中没有的边,把这条边删掉,则A仍然是生成树,A,B集合相同的边多了一条,重复这个过程直到A B包含的边相同。注:这个命题比较容易证,它告诉我们任何两棵生成树都可以通过不断换边得到。(重要的是换边的过程中始终保. 阅读全文

posted @ 2011-08-09 21:05 龙豆 阅读(1517) 评论(0) 推荐(0)

资源收集【更新】

摘要: ================================一、结构之法、算法之道 blog:http://blog.csdn.net/v_july_v/article/details/6543438 1、从2-3-4树谈到Red-Black Tree(红黑树) http://blog.csdn.net/v_july_v/article/details/6531399 2、从B树、B+树、B*树谈到R树 http://blog.csdn.net/v_july_v/article/details/6530142 3、…… 阅读全文

posted @ 2011-08-09 11:41 龙豆 阅读(242) 评论(0) 推荐(0)

算法导论-18.3-2 B-TREE-DELETE的伪代码

摘要: 【转】————————————————————————————————————————————————————《算法导论》练习18.3-2: 请写出B-TREE-DELETE的伪代码。与插入情况相对称,除了根结点外(根结点个数不能少于1),B树的关键字数不能少于t-1个。对于简单删除情况,如果我们定位到关键字处在某个结点中,如果这个结点中关键字个数恰好是t-1个,如果直接删除这个关键字,就会违反B树规则。此时,需要考虑两种处理方案:1)把这个结点与其相邻结点合并,合并时需要把父结点的一个关键字加进来,除非相邻的那个结点的关键字数也是t-1个,否则,合并后会超出2t-1的限制,同样违反B树规则。 阅读全文

posted @ 2011-08-09 10:50 龙豆 阅读(2969) 评论(5) 推荐(0)

2011年8月5日

算法导论-22.3-6 用栈实现DFS

摘要: 自己写的一个:#include <iostream>#include <stack>using namespace std;const int maxV = 100, white = 0, gray = 1, black = 2;int v, itime;struct SNode{ //节点 int color, d, f, num; SNode *p;};struct SAdj{ //邻接表 int num; SAdj *next;};SAdj *adj[maxV];SNode *vertex[maxV];stack<SNode*> vertexStack 阅读全文

posted @ 2011-08-05 20:30 龙豆 阅读(2544) 评论(0) 推荐(1)

2011年7月30日

poj-2313 Sequence ***

摘要: /* * 贪心: * 但自己没想出来, 看了网上的解法。。似乎也不太懂。 。 网上给的解法倒是可以证明是对的,但不知道是怎么想的 * 先给网上的解法: * //开始假设b[i] = a[i](1 <= i <= n) * //显然b[i]对于最后最优值产生影响的有三项|a[i]-b[i]|,|b[i]-b[i-1]|,|b[i]-b[i+1]| * //反应在数轴上要使得这三项最小,那么取值应该是这三数居中的那个 * //若存在i使 b[i] < 或者 > Mid(b[i - 1], a[i], b[i + 1]) (2 <= i <= n - 1) * / 阅读全文

posted @ 2011-07-30 20:12 龙豆 阅读(505) 评论(0) 推荐(0)

poj-2325 Persistent Numbers ****

摘要: /* * 简略版大整数除法 + 贪心 * 不难发现,如果输入的数含有大于等于10的质数因子,则无解,所以 * ,只需要把输入的数分解为2,3,5,7的幂的形式,然后再由低位向 * 高位进行分配即可(越低位的数字,其值尽可能大) * * 开始没好好分析,结果认为 只要 从高位向低位枚举,且满足( ans[i+1] >= ans[i] && ans[i+1]*ans[i] >= 10 )即可, * 每次枚举一个,就将原数除这个数。。。一次递归求每一位数。 只要求出了一个答案,则答案就是这个。。 * 后来发现这个方法是不行的。。 比如:54454680 找到的答案是:25 阅读全文

posted @ 2011-07-30 17:05 龙豆 阅读(715) 评论(0) 推荐(0)

导航