B树的简介B树的性质:一棵B树T是具有一下性质的有根树: 1. 每个结点 x 具有如下属性: a. x.n 存储当前节点 x 中关键字的个数; b. x.n 个关键字本身 x.key1, x.key2, ..., x.keyx.n 以非降序存放,使得 x.key1 ≤ x.key2≤ ...
分类:
其他好文 时间:
2014-12-11 13:57:55
阅读次数:
154
题目大意:给出一个有根树,树上的边有边权。现在可以将一个边的边权的值+1,要想使得根节点到所有叶子节点的距离相等,最少需要多少个+1操作。
思路:当只考虑以一个节点为根的子树的时候,就必须要保证这个根节点到所有这个子树中的叶子节点的距离相等,才能保证最终根节点到所有叶子节点的距离都相等。所以就深搜一次,对于每个节点求出到这个节点的最长距离,将所有其他的边加成这个最长距离,记录答案。
但...
分类:
其他好文 时间:
2014-12-10 14:16:42
阅读次数:
280
题目大意:给定一棵有根树,每次操作可以使某条边边权+1,求最少的操作次数,使根节点到每一个叶节点的距离都相等
树形DP
容易发现操作对于越靠近根节点的边进行越有利
首先对于每个节点扫一遍记录这个节点到子树中所有叶节点的最大距离 然后枚举每一个儿子 将该节点和该儿子之间的边权补至最大距离相等
对于每个节点都如此做 最后就能保证根节点到每个叶节点的距离都相等
数据有误坑死人……
#incl...
分类:
其他好文 时间:
2014-12-09 14:01:30
阅读次数:
183
题目大意:求直径长度为N的无根二叉树的个数(同构的只算一种)分析:分析发现直径长度不好处理!因此考虑把问题转化一下:假设要求直径为N的二叉树(1)若N为偶数,将树从直径中点的边断开,则分成了两个深度为 n/2 的有根树(为什么要这么分?因为若深度大于 n/2 那么子书的直径就有可能大于n了!)用nu...
分类:
其他好文 时间:
2014-12-08 22:42:38
阅读次数:
195
题目大意:给定一棵有根树,提供下列操作:
1.询问某个点到根路径上的点权和
2.修改某个点的父亲,保证修改之后仍然是一棵树
3.将某个点所在子树的所有点权加上一个值
子树修改,LCT明显是搞不了了,在想究竟会不会有人去写自适应Top-Tree……
首先我们DFS搞出这棵树的入栈出栈序 然后入栈为正出栈为负
那么一个点到根的路径上的点权和就是从根节点的入栈位置到这个点的入栈位置的和
子...
分类:
其他好文 时间:
2014-12-01 17:41:14
阅读次数:
139
Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有q次询问,每次询问给出l r z,求sigma_{l#include#include#include#i...
分类:
其他好文 时间:
2014-11-28 18:09:06
阅读次数:
132
题意:一棵有根树,每个节点都有一个value值和属性(LICK或是 CANDLE)。你可以通过反转一些点的属性,反转一个点时候,它的整个子树都会被反转属性。有些点反转消耗代价为X,有些为Y。你的目标的是使得LICK的value和最大。
解法:13年长沙区域赛一道题,感情当时都没有做到这道题。状态ans[i][0/1]分别表示此点的子树LICK最多能比CANDLE多多少和少多少的值。状态转移见代码...
分类:
其他好文 时间:
2014-11-05 14:49:06
阅读次数:
120
摘要 书中第10章10.4小节介绍了有根树,简单介绍了二叉树和分支数目无限制的有根树的存储结构,而没有关于二叉树的遍历过程。为此对二叉树做个简单的总结,介绍一下二叉树基本概念、性质、二叉树的存储结构和遍历过程,主要包括先根遍历、中根遍历、后根遍历和层次遍历。1、二叉树的定义 二叉树(Binary.....
分类:
其他好文 时间:
2014-11-04 00:09:42
阅读次数:
247
摘要 本章介绍了几种基本的数据结构,包括栈、队列、链表以及有根树,讨论了使用指针的简单数据结构来表示动态集合。本章的内容对于学过数据结构的人来说,没有什么难处,简单的总结一下。1、栈和队列 栈和队列都是动态集合,元素的出入是规定好的。栈规定元素是先进后出(FILO),队列规定元素是先进先出(FI.....
分类:
其他好文 时间:
2014-11-03 22:23:50
阅读次数:
240
题目大意:给出一颗无根树,有链的修改操作,还有子树的查询。除此之外,还有选定这棵树的一个点为根。
思路:子树操作,链上修改,带size域的树链剖分就可以搞定。换根肯定不能真的换,出题人要是闲的没事所有操作都在换根就惨。我们可以画一张图模拟下换根。先按照读入的顺序建一颗有根树,然后观察当前的根在要询问的点的位置。如果当前的根在要询问的点的儿子中,那么那个点为根的时候,当前点的子树就是除了当...
分类:
其他好文 时间:
2014-10-30 17:13:46
阅读次数:
226