线索化二叉树介绍: 1)n个节点的二叉树含有n+1【公式 2n-(n-1)=n+1】个空指针域。利用二叉链表中的空指针域,存放指向该节点在某种遍历次序下的前驱和后继节点的指针(这种附加指针称为“线索”) 2)这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。根据线索性质的不同,线索二 ...
分类:
其他好文 时间:
2020-01-30 11:21:42
阅读次数:
84
[APIO2012]派遣 枚举所有忍者在哪棵子树内, 答案即为本子树内最多派遣的忍者数乘上子树根在原树中祖先最强的领导力, dfs用可并堆合并两棵子树即可, 这道题用不着用并查集维护连通性 ...
并查集 1.合并两个集合 2.查询两个数是否在一个集合 基本原理: 每个集合用一棵树来表示,树根的编号就是整个集合的编号,每个结点存储他的父节点,p[x]表示x的父节点 1.是否是一个集合 if( find(a)==find(b) ) 2.合并两个集合 p[find(a)]=find(b) stat ...
分类:
其他好文 时间:
2020-01-26 17:28:04
阅读次数:
84
昨晚 614div2的F题。我现在看感觉比E题还简单啊,为什么当时要去死刚E题呢。。。 题目大意:有一棵树,根节点编号为$1$,设一个节点的编号$x(x 1)$,则它的父节点编号为$x/f(x)$,边权为1,其中$f(x)$为$x$的最小质因子。现在给定$n(n<=1000000)$个编号为$k_{ ...
分类:
其他好文 时间:
2020-01-20 14:26:58
阅读次数:
145
1760:树上数颜色 时间限制: 3000 ms 内存限制: 524288 KB提交数: 35 通过数: 9 【题目描述】送你一棵n个点的树,树根为1。一开始每个点上有一个1~n 的颜色ci,不同点颜色可以相同。 现在有 q 次操作, 分为两种类型: 1 u l r:询问子树 u 中有多少种在 l ...
分类:
其他好文 时间:
2020-01-19 00:27:55
阅读次数:
104
二分答案$k$ 把一个树分成 $m$ 个部分,使得 $m$ 个部分中的直径不少于 $k$. 贪心! 对于一个子树,我们肯定希望有尽可能多的赛道,其次,我们希望子树根节点有一条很长的链. 考虑神奇的递归思想. 如果我们有一棵小树: 本质上就是一条链或者是链的结合. 于是我们可以直接维护子树的链. 拿出 ...
分类:
其他好文 时间:
2020-01-18 21:03:41
阅读次数:
65
并查集:find() + union()+ init() 寻找根节点 + 合并子树 + 初始化 #include <stdio.h> #define MAX 100 using namespace std; int father[MAX]; //自己的父亲 int rank[MAX]; //秩 in ...
分类:
其他好文 时间:
2020-01-14 23:37:34
阅读次数:
95
树根:rootNode. 树只有一个树根。 节点:Node. 树上的所有节点。 子节点数组:Node[]. 数组代表每个节点的所有子节点 父节点:parentNode. 每个节点只有一个父节点。 2. Node为Tree中的内部类 parent :指向父节点的引用 childern: 孩子数组,存储 ...
分类:
编程语言 时间:
2020-01-13 00:59:54
阅读次数:
89
1. 设F是由T1、T2和T3三棵树组成的森林,与F对应的二叉树为B,T1、T2和T3的结点数分别为N1、N2和N3,则二叉树B的根结点的左子树的结点数为 N1-1 。 由森林转化为二叉树的规则可知,T2、T3是转化为T1的右子树的,T1去掉一个根节点,所以二叉树B根节点的左子树节点数为N1-1。 ...
分类:
编程语言 时间:
2020-01-12 20:25:51
阅读次数:
164
构造两颗深度为30的字典树(根节点分别是0和1),结点只有0和1,从根节点向下DFS,贪心取答案。 1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 vector<int>a; 5 in ...
分类:
其他好文 时间:
2020-01-12 13:23:09
阅读次数:
70