随笔分类 -  ACM_竞赛知识_学习之路

ACM_竞赛知识_学习之路
图的连通性问题—学习笔记
摘要:连通性问题主要有求有向图的强连通分量的三种算法,Kosaraju,Trajan,Carbow:最小点基和最小权点基础:无向图的双连通分量以及求桥和割点的Trarjan算法:全局最小权割问题和Stoer—Wagner算法:2—SAT本来图论的学习在十一月份的时候我应该结束第一轮的,但是由于该死的考试,第一轮只能进行到无向图的双连通了,图论还剩下网络流和二分图及匹配算法,两个大的专题,没有办法只能在来年一,二月份进行了,本来那段时间是用来图论进阶的和学习计算几何的,哎,坑爹的考试,可不能挂科啊,啊Ksaraju:Ksaraju算法基于强连通分量内部所有的点都可以互达的,那么对原图G和反图GT分别进 阅读全文

posted @ 2013-11-18 21:55 天使是一个善良的神 阅读(281) 评论(0) 推荐(0)

无向图的双连通
摘要:点连通度与边连通度在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。一个图的边连通度的定义为,最小割边集合中的边数。[双连通图、割点与桥]如果一个无向连通图的点连通度大于1,则称该图是点双连通的(pointbiconnected),简称双连通或重连通。一个图有割点,当且仅当这个图的点连通度为1,则割点集合的唯一元素被称为割点(cutpoint),又叫关节点(artic 阅读全文

posted @ 2013-11-18 13:33 天使是一个善良的神 阅读(592) 评论(0) 推荐(1)

二叉树的建立和递归遍历
摘要:const int MAXN = 1000010;//二叉树的节点的结构体的表示形式struct Node{ char data; struct Node *leftchild,*rightchild;}BTree;//栈的结构体的表示形式struct sstack{ BTree *map_stack[MAXN]; int top;}Stack;//队列的结构体的表示形式struct qqueue{ BTree *map_queue[MAXN]; int head; int tail;}Queue;//创建二叉树,利用递归的方法BTree *BuildTree(){ char char_str 阅读全文

posted @ 2013-10-15 15:02 天使是一个善良的神 阅读(264) 评论(0) 推荐(0)

初识位压缩
摘要:位压缩。所谓的位压缩就是用一个整数来保存几个事物的有无状态。我们知道每个整数对应一个二进制,二进制就是01串,而0对应的就是无,1对应有,这样几个事物的有无就可以确定一个二进制串,进而可以确定一个整数。故用整数保存几个事物的有无状态。假设已知一个整数m,要判断事物n(n是编号,从1开始)是否存在,可以进行&运算:m&1<<n-1,如果运算结果为0,则n不存在,如果运算结果非0,则n已存在。如果n不存在,要把n加入,可以进行 | 运算:m | 1<<n-1,可以用运算结果来记录这个新状态。 阅读全文

posted @ 2013-10-07 15:57 天使是一个善良的神 阅读(401) 评论(0) 推荐(0)

树状数组总结
摘要:树状数组总结问题:已知数组 a[],元素个数为n,现在更改数组中某些元素的值,求更改后a数组中i到j区间内元素的和(1= 1;i -= lowbit(i)) sum += c[i]; return sum;}例如:HDU 1556Color the ballTime Limit: 9000/3000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6412Accepted Submission(s): 3385Problem DescriptionN个气球排成一排,从左... 阅读全文

posted @ 2013-10-05 19:38 天使是一个善良的神 阅读(230) 评论(0) 推荐(0)

树形数组
摘要:如果给定一个数组,要你求里面所有数的和,一般都会想到累加。但是当那个数组很大的时候,累加就显得太耗时了,时间复杂度为O(n),并且采用累加的方法还有一个局限,那就是,当修改掉数组中的元素后,仍然要你求数组中某段元素的和,就显得麻烦了。所以我们就要用到树状数组,他的时间复杂度为O(lgn),相比之下就快得多。下面就讲一下什么是树状数组: 一般讲到树状数组都会少不了下面这个图: 下面来分析一下上面那个图看能得出什么规律: 据图可知:c1=a1,c2=a1+a2,c3=a3,c4=a1+a2+a3+a4,c5=a5,c6=a5+a6,c7=a7,c8=a1+a2+a3+a4+a5+a6+a7... 阅读全文

posted @ 2013-10-05 17:26 天使是一个善良的神 阅读(343) 评论(0) 推荐(0)

无前驱的顶点的拓扑排序
摘要:无前驱的顶点的拓扑排序算法,采用链式前向星存储图,队列实现拓扑排序代码:#include #include #include using namespace std;int i,j,w;int head[100];int indegree[100];struct EdgeNode{ int to; int next;};EdgeNode Edge[1000];int n,m;int main(){ while(~scanf("%d%d",&n,&m)) { memset(indegree,0,sizeof(indegree)); memset(head,0, 阅读全文

posted @ 2013-09-01 20:36 天使是一个善良的神 阅读(382) 评论(0) 推荐(0)

导航