Address
Solution
- 看到要最小化每个点子节点个数的最大值,想到二分答案 m i d mid mid
- 考虑通过构造进行判断
- 首先要知道:所有节点的子树大小之和,等于所有节点的深度之和
- 所以在此题中,一棵树可以被量化成一个数组 d [ ] d[] d[] ,其中 d [ i ] d[i] d[i] 表示深度为 i i i 的点数
- 然后尝试分析一下每个点的子节点数不超过 m i d mid mid 当且仅当什么
- 可以发现一棵满足条件的树需要满足
- (1) d [ 1 ] = 1 d[1]=1 d[1]=1
- (2) ∀ i > 1 , d [ i ] ≤ d [ i − 1 ] × m i d \forall i>1,d[i]\le d[i-1]\times mid ∀i>1,d[i]≤d[i−1]×mid
- (3) ∑ i d [ i ] = n \sum_id[i]=n ∑id[i]=n
- (4) ∑ i d [ i ] × i = s \sum_id[i]\times i=s ∑id[i]×i=s
- 先不考虑条件(4),显然所有节点的深度之和最大的情况是这 n n n 个点组织成一