
数据结构——树
文章平均质量分 80
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
习题6-3 二叉树重建 UVa536
1.题目描述:点击打开链接 2.解题思路:一开始的原创 2014-08-29 15:37:42 · 781 阅读 · 0 评论 -
HDU 5044 Tree (2014年上海赛区网络赛C题)
1.题目描述:点击打开链接 2.解题思路:本题是树链剖分的入门题。关于树链剖分的讲解,可以参考该博客:点击打开链接 。本题要求对结点和边都执行add操作,如果用树链剖分,并结合线段树,执行每次操作的时间复杂度可以降为O((logn)^2)。 3.代码: #include #include #include #include #include #include #include #includ原创 2015-09-06 17:15:20 · 522 阅读 · 0 评论 -
2015编程之美初赛第一场 A 彩色的树
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定一棵n个节点的树,节点编号为1, 2, …, n。树中有n - 1条边,任意两个节点间恰好有一条路径。这是一棵彩色的树,每个节点恰好可以染一种颜色。初始时,所有节点的颜色都为0。现在需要实现两种操作: 1. 改变节点x的颜色为y; 2. 询问整棵树被划分成了多少棵颜色相同的子树。即每棵子树内原创 2015-04-25 17:42:47 · 1209 阅读 · 4 评论 -
习题6-8 空间结构 UVa806
1.题目描述:点击打开链接 2.解题思路:本题考查四分树的遍历。本题实质上是已知一棵四分树求黑色结点的编号;已知黑色结点的编号反过来构造四分树。第一种情况相当于编码,我们用先序遍历解决。用encode函数表示给整个四分树编码,如果发现内部既有0又有1出现,那么将其均分为四份,递归编码;反之则统计该结点的颜色以及路径。这里把路径编码成一个十进制数,便于转换。同理,如果已知了黑色结点,那么首先解码出原创 2015-04-04 01:29:27 · 1598 阅读 · 0 评论 -
例题1.15 网络 UVALive 3902
1.题目描述:点击打开链接 2.解题思路:本题要求放置尽可能少的服务器,使得所有的客户端到最近的服务器的距离都不超过k。由于已经放置了一个服务器,不妨把它当做根结点,先把无根树转化为有根树,然后我们考虑最深的叶子,那么不难证明,该叶子结点的最优服务器的放置位置是它的k级祖先。这样本题的算法便不难想出:从最深的叶子开始枚举,并在它的k级祖先处放置一个服务器,同时标记该服务器能覆盖到的所有结点,这样原创 2015-03-13 23:05:09 · 717 阅读 · 0 评论 -
例题6-8 树 UVa548
1.题目描述:点击打开链接 2.解题思路:本题给出了一颗二叉树的中序遍历和后序遍历,要求找一个叶子,使得它到达根结点的权和最小,如果有多解,那么该叶子自身的权应该尽量小。首先,根据中序遍历和后序遍历建立二叉树,这道题采用数组来存放左右子树的结点值,根为root的左子树结点为lch[root]右子树结点为rch[root]。 那么,如何根据中序遍历,后序遍历来建树呢?方法是根据后序遍历找到根,然原创 2015-03-30 00:12:08 · 510 阅读 · 0 评论 -
例题6-7 树的层次遍历 UVa122
1.题目描述:点击打开链接 2.解题思路:本题是训练二叉树的一道好题。首先要解决读数据问题,根据题意,当输入为“()”时,结束该组数据读入,当没有字符串时,整个输入结束。因此可以专门编写一个readin()函数,类型设置为bool型,遇到第一种情况时返回true,遇到第二种情况返回false,主程序中只要发现readin返回false时就break,结束整个大循环。 接下来要建立二叉树,首先为原创 2015-03-29 22:33:55 · 2546 阅读 · 0 评论 -
#294 (div.2) E.A and B and Lecture Rooms
1.题目描述:点击打开链接 2.解题思路:本题让我长见识了。也学到了很多新的知识:LCA,多级祖先算法。如果只是单纯地将无根树转化为有根树,找到u,v的中点,再用BFS计算中线上结点的个数,那么最终会导致TLE。本题的高效算法如下: 首先求出以1为根的树的所有结点的总个数,保存在num数组中,再利用LCA算法求出u,v的公共祖先,设为LCA。找到u,v结点的中点mid.此时规定deep原创 2015-03-01 22:18:18 · 1102 阅读 · 0 评论 -
习题6-2 S树 UVa712
1.题目描述:点击打开链接 2.解题思路:原创 2014-08-29 11:53:43 · 732 阅读 · 0 评论 -
例题7-7 天平难题 UVa1354
1.题目描述:点击打开链接 2.解题思路:利用二进制原创 2014-09-08 23:36:43 · 3128 阅读 · 9 评论 -
习题6-11 树重建 UVa10410
1.题目描述:点击打开链接 2.解题思路:由于只给定了BFS,DFS序列,当然要通过先序遍历(即DFS)和层次遍历(即BFS)将原树构造出来。先序遍历时利用BFS数组找出正在访问的结点的子结点,层次遍历时利用DFS数组找到本层结点的结束位置(即下一层的起始结点),由于细节比较多,详细过程请参见程序的注释 3.代码: #define _CRT_SECURE_NO_WARNINGS #inc原创 2015-01-31 19:58:05 · 703 阅读 · 0 评论 -
HDU 5029 Relief grain (2014年广州赛区网络赛H题)
1.题目描述:点击打开链接 2.解题思路:本题是典型的树链剖分题目,不过本题的一个难点在于如何维护每个结点处数量最多的谷物型号。树链剖分经常和离线标记法结合使用,本题亦然。可以用一个vector来维护区间端点处增加的谷物种类。addv[L].push_back(z),subv[R+1].push_back(z)。通过树链剖分可以快速标记好每个区间。接下来就是扫描一遍每个结点,并用一个线段树来维护原创 2015-09-23 23:54:14 · 581 阅读 · 0 评论