最少需要多少个结点?
Submit solution
Points:
100
Time limit:
1.0s
Memory limit:
8M
Author:
Problem type
Allowed languages
C, C++
小 T 有一棵有根树。他只告诉你两件事:
- 这棵树一共有 k 个叶子结点;
- 这 k 个叶子结点的深度分别是
a1, a2, …, ak。
请你计算:满足这些条件的树,最少需要包含多少个结点? (小 T 保证至少存在一棵符合条件的树。)
术语小抄
- 简单路径:路径上不重复顶点、不重复边的一条路径。
- 树:一张连通的图,且任意两点之间恰好只有一条简单路径。我们会从中选一个点作为根结点。
- 叶子结点:不是根、并且度数为 1 的结点。
- 深度:从根结点到该结点的那条简单路径上,结点的个数(包含起点和终点)。
输入格式
- 第一行:一个整数
k。 - 第二行:
k个整数,表示叶子结点的深度a1 a2 … ak。
输出格式
- 输出一个整数:在所有满足条件的树中,结点总数的最小值。
说明
你只知道每个叶子的深度和叶子总数;非叶子结点的结构可以由你自由安排,只要能让所有叶子出现在指定深度即可。你的目标是把整棵树的结点数尽量压缩到最少。
Comments