A. max(n, m)

B. (leaf+1)/2

C. 选出来的 t 每次减少 1。

https://codeforces.com/contest/1905/submission/238024495

D. 倍长之后,每次往后增加一个数,删掉开头的数字,区间取 max,区间求和,线段树二分。

E. 令 $f(n, p)$ 为有 n 个点,当前是 p 的答案,然后发现其实是一个类似二次函数的东西,递归就能维护了。