模板
题意:给你一个图,1总是为根,每个边有单位价值,每个点有权重。
每条边的价值 = sum(后继节点权重)*边的单位价值。
求树的最小价值,即构成一棵树的n-1条边的最小价值。
算法:
1、因为每个边的价值都要乘以后来访问的节点的权重,而走到后来访问的点必经过这条边。
实际上总价值就是 到每个点的最短路径*这个点的权重。
2、但是这个题 数据量真的太大了,50000个点...
分类:
其他好文 时间:
2014-07-09 11:33:57
阅读次数:
273
通常我们所说的删除链表的某个结点,是彻底删除该结点的空间,而要这么做就必须知道其前驱结点。这里的想法是,链表中存储的val是同类型的,只要将该结点的val内容删除就可以了。那么就可以用该结点的后继结点的值覆盖当前结点,然后删除其后继结点,而对于其后继结点而言,该结点就是前驱。
这里只需要考虑当前删除的结点是否为last node 就可以了,至于是否是头结点,这种情况是可以归为同一种情况的,只是参...
分类:
其他好文 时间:
2014-07-08 13:58:04
阅读次数:
197
一个人在学校的日子有些寂寞,但是st说男人要耐得住寂寞,做学问也是如此吧。今天看了线性表、栈和队列的内容。以下是学习记录。线性表(list)1.定义:0个或多个数据元素的有限序列,元素有且只有一个直接后继和一个直接前驱;基本操作ListLength、GetElem、LocateElem、ListI..
分类:
其他好文 时间:
2014-07-08 09:20:58
阅读次数:
218
基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。 实现代码:[cpp]view plaincopyprint?typedefintDataType;//类型定义typedefstructnode{//单链表定义DataT...
分类:
其他好文 时间:
2014-07-07 21:19:21
阅读次数:
241
对于单链表的逆置有两种方法可以实现:(1)利用辅助指针 基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。 实现代码: 1 typedef int DataType; //类型定义 2 typedef struct ...
分类:
其他好文 时间:
2014-07-07 10:48:40
阅读次数:
210
首先来简单说下一些关于的基本概念。
树是一种非线性的数据结构
1,树是由 n(n>=0) 个结点组成的有限集合
如果n = 0 ,称为空树
如果n > 0,则:
有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱
除了根以外的其他结点划分为:m(m>=0)个互不相交的有限集合,T0,T1,T2…Tn-1,每个集合又是一棵树,并且称之为根的子树...
分类:
编程语言 时间:
2014-07-06 10:09:02
阅读次数:
234
HDU 3032 Nim or not Nim? (sg函数求解)
题目大意:
Alice和Bob轮流取N堆石子,每堆S[i]个,Alice先,每一次可以从任意一堆中拿走任意个石子,也可以将一堆石子分为两个小堆。先拿完者获胜。(1 ≤ N ≤ 10^6, 1 ≤ S[i] ≤ 2^31 - 1)
解题思路:
对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Grundy函数g如下:g(x)=mex{ g(y) | y是x的后继 },这里的g(x)即sg[x]
例如:取石子问题,有1堆n...
分类:
其他好文 时间:
2014-07-06 00:44:38
阅读次数:
339
搜索树数据结构支持许多动态集合操作,如search(查找)、minmum(最小元素)、maxmum(最大元素)、predecessor(前驱)、successor(后继)、insert(插入)、delete(删除),这些都是基本操作,可以使用一颗搜索树当做一个字典或者一个优先队列。
12.1、什么事二叉搜索树
二叉搜索树是以一棵二叉树来组织的,可以用一个链表数据结构来表示,也叫二叉...
分类:
其他好文 时间:
2014-07-03 18:02:21
阅读次数:
231
线性结构线性结构的特点是:在数据元素的飞空有限集中,(1)存在唯一的一个被称作“第一个”的数据元素;(2) 存在唯一一个被称做“最后一个”的数据元素;(3)除第一个外,集合中的每一个元素都只有一个前驱,除最后一个外,集合中的每一个元素都只有一个后继。在稍复杂的线性表中,一个数据元素含有若干个数据项,...
分类:
其他好文 时间:
2014-06-27 19:12:43
阅读次数:
144
题目的意思是给你一组数,然后不断的进行除法(注意是大数除以小数),然后将得到的结果加入这组数种然后继续进行除法,直到没有新添加的数为止此题按照提议模拟即可注意要保持元素的不同 int CountNumbers(vector numbers) { set ss(numbers.b...
分类:
其他好文 时间:
2014-06-26 19:29:28
阅读次数:
241