上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页
摘要: 题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1301题目大意:输入一个n,表示有n个村庄,然后下面是n-1行,每行开头有两个代表字母和数字,分别表示 起始点和与其相同的村庄的个数。然后就是与其相同的村庄和道路长度,求最小连通值。代码View Code 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 int map[30][30]; 5 int vis[30]; 6 int prim(int n) 7 { 8 int ans = 0 阅读全文
posted @ 2012-08-06 20:56 某某。 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 赤裸裸的最小生成树。题目大意就是输入一个N表示有n个村庄,然后输入n行n列,第i行j个元素表示i村庄离j村庄的路数多远(所以i行i列一般为零),然后输入q,表示q条路已修,然后输入q对数就可以了。(权值为零)。求使其n个村庄最小的连通值。需要注意的是可能会有重复的路出现,但是有不同的值。既然是求最小生成树,那么可以用prim算法在输入路的时候保证是最小的值。代码如下View Code 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 int map[105][105]; 5 int 阅读全文
posted @ 2012-08-06 20:52 某某。 阅读(218) 评论(0) 推荐(0) 编辑
摘要: hdu 1879 继续畅通工程 克鲁斯 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 typedef struct node 5 { 6 int u,v,w; 7 }edge; 8 edge e[10005]; 9 int dg[105];10 void init(int n)11 {12 int i;13 for(i = 1;i <=n ;i++)14 dg[i] = i;15 }16 int cmp(const void *a,const void *b)17 {18 阅读全文
posted @ 2012-08-06 20:42 某某。 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 最近做了点并查集的题,感觉也挺简单的。下面对我这段时间关于并查集的学习,做一下小结。并查集的作用:并和查,即合并和查找,将一些集合合并,快速查找或判断某两个集合的关系,或某元素与集合的关系,或某两个元素的关系。并查集的结构:并查集主要操作对象是森林,树的结构赋予它独特的能力,对整个集合操作转换为对根节点(或称该集合的代表元素)的操作,一个集合里的元素关系不一定确定,但相对于根节点的关系很明了,这也是为了查找方便。并查集优化方法:按秩合并和路径压缩的配合使用,使得查找过程优化到极致。按秩合并,每次将深度小的树合并到深度大的树里面去,使得整棵树尽量矮;路径压缩,将当前节点到根节点路径上的所有点直接 阅读全文
posted @ 2012-08-03 19:35 某某。 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 很多地方用到模运算,这里说明模运算的一些规律,并加以证明。 后续会对这些理论实际的应用加以记录和说明。1. 模运算是取余运算(记做 % 或者 mod),具有周期性的特点。m%n的意思是n除m后的余数, 当m递增时m%n呈现周期性特点, 并且n越大,周期越长,周期等于n。例如0 % 20 = 0,1 % 20 = 1, 2 % 20 = 2, 3 % 20 = 3, ..., 19 % 20= 1920 % 20 = 0,21 % 20 = 1,22 % 20 = 2,23 % 20 = 3, ...,39 % 20 = 192. 如果m %n = r,那么可以推出如下等式m = k * n + 阅读全文
posted @ 2012-08-03 17:58 某某。 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1285纯粹的拓扑排序View Code 1 #include <stdio.h> 2 #include <string.h> 3 int count,n,in[505],map[505][505],vis[505],sort[505]; 4 5 void topo(int x) 6 { 7 vis[x] = 1; 8 sort[count] = x; 9 count++;10 int i;11 for(i = 1;i <= n;i++)12 {13... 阅读全文
posted @ 2012-08-02 21:47 某某。 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2094对于是否有环,是通过一个N(节点数)的循环来判定。检查并更新每个节点的入度数。每找到一个入度唯一的节点就是它的临边取消,即让他的下个节点的入度减一;最后看看入度为0的节点数是否为N。这道题我还多加了个判断看看是否含有多个冠军的可能。这道题倒是没有那么麻烦,没打用到拓扑。View Code 1 #include <stdio.h> 2 #include <string.h> 3 struct node 4 { 5 char str[1005]; 6 }a[1005]; 7 阅读全文
posted @ 2012-08-02 21:40 某某。 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 这道题数据比较大,得用领阶表,表示压力很大。。。。这道题有两个地方值得注意。第一个地方就是怎么确定是否有环,确定的办法就是就是根据离散数学(离散86,烧包加雄起~)的入度来说,当遍历一边并且更新后查找入度为零的点应该有N个(一共N个点)。用一个计数器num去计算是否为n。第二个地方就是方向思维。按理说我们应该用大的作小的父亲,但是当我们建立完一个拓扑表以后,我们如果按照以大的作为父亲的话,我们在计算最顶端的权值(暂且叫为权值吧),即最高点的薪水时,用起点与后续节点相比较加一时不准的,因为后面节点的值会随着向后遍历而改变,而对于遍历完的值无法改变。所以我们不如去找最为固定的点,即最小薪水的点,来 阅读全文
posted @ 2012-08-02 21:31 某某。 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 不大明白啥叫记忆化搜索,但是PC学长说就相当于打表~不大懂= =。。。回头好好看一下题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1501参考着崔老师的代码来的。View Code 1 #include<stdio.h> 2 #include<string.h> 3 4 char s1[205],s2[205],s3[410]; 5 int len,count,vis[205][205],leap; 6 void dfs(int a,int b,int c) 7 { 8 if(leap) 9 return;10 if(v.. 阅读全文
posted @ 2012-08-01 22:18 某某。 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1372大体意思是给你一个8*8的棋盘,然后给你两个字母与数字的组合,字母代表的是行,数字代表咧,让你找出从第一个组合的位置到第二个组合的位置,至少要走多少步。View Code 1 #include<stdio.h> 2 #include<string.h> 3 struct node 4 { 5 int x,y,step; 6 }q[100005]; 7 int map[15][15]; 8 int pro[15][15]; 9 int to[8][2] = {{2,1}, 阅读全文
posted @ 2012-08-01 20:38 某某。 阅读(146) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页