最少需要多少个结点?


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

There are no comments at the moment.