数据结构
Code--Dream
acm
展开
-
堆排序-----数据结构
堆排序 前不久,我们数据结构刚刚学习到,堆排序。个人觉得堆排序比较好,因为比较稳定的时间复杂度。n(logn) 时间复杂度。 如果想要学会堆排序,需要知道,二叉树。堆就和二叉树长的一模一样。 下面说说堆排序: 堆排序的思想就是用到堆的特点, 大顶堆,小顶堆,简单说, 大顶堆就是:这一棵完全二叉树的任意一个节点都满足该节点的值大于等于他的左右孩子节点,原创 2016-05-21 21:41:11 · 434 阅读 · 0 评论 -
最小生成树,并查集的思想 nyoj1239
#include #include #include using namespace std; int n,pre[10010],cnt; struct node { int x,y; int val; } p[10010]; void init() { for(int i=0; i<10010; i++) pre[i]=i; } int cmp(nod原创 2016-04-04 21:20:27 · 346 阅读 · 0 评论 -
图的存储 ( 十字链表 )
直接进入正题,存图最简单易懂的就是邻接矩阵。然后就是邻接表。这个不懂,可以先看看数据结构书。默认你会邻接表。讲十字链表还是得先说说是什么: 十字链表(Orthogonal List)是有向图的另一种链式存储结构。该结构可以看成是将有向图的邻接表和逆邻接表结合起来得到的。用十字链表来存储有向图,可以达到高效的存取效果。同时,代码的可读性也会得到提升。 比如就以这幅图为例:原创 2016-07-14 16:24:20 · 9210 阅读 · 1 评论 -
最小生成树 算法
nyoj 38 http://acm.nyist.net/JudgeOnline/problem.php?pid=38 prim 克鲁斯卡尔 两个算法 首先说说 克鲁斯卡尔算法,按照边的从小到大排序之后,利用并查集的思想,不断并。直到并出n-1条边。 #include #include #include #include #include #include #includ原创 2016-06-18 10:07:00 · 391 阅读 · 0 评论 -
多重邻接表
好好看一遍,数据结构这本书老师很多东西都没有讲,不怪老师,因为下面没人听。所以自己看看,写一下: 给你一幅图你能够画出多重邻接表的结构图你就明白了。 所以给出如下一幅图: 结构图如下: 代码以后再写。原创 2016-07-15 17:15:35 · 3193 阅读 · 0 评论 -
C语言 写的 表达式求值。
有不对的地方还望指出来,让我改正。谢谢 #include #include #include #include #define Stack_Size 1010 #define INF 21000000 char cmp[7][8]= {">>>",">>>",">>>>",">>>>",">>>?>>","<<<<<?="}; /* > > >原创 2016-06-22 20:06:42 · 2247 阅读 · 1 评论 -
DFS序+线段树(bzoj 4034)
题目链接 题目就不多说了。 本题目,可以用dfs序+线段树做:题目给定了一棵树,树上节点告诉了权值。我们可以先将这棵树进行dfs将一棵树变成线性结构:如图 变成这样后,然后就可以用线段树。 操作1:也就是将某两个点+a;操作2:区间更新操作3:查询起始区间到某点的和 我们建线段树,需要统计 +,- 抵消后的个数,因为要知道该区间的和,需要知道+a; 简单插线问线。 代原创 2017-07-04 21:23:22 · 607 阅读 · 0 评论