考虑离线操作询问一条链和以每个点为中心的菊花,共 $n + 1$ 次离线询问。
询问一条链的意义是可以求出 $\displaystyle\sum_{i=0}^{n-1} a_i$ 的值,而询问一个中心为 $u$ 的菊花的意义是,设 $p_1,p_2,p_3$ 为前三大的值,若 $a_i \ge p_3$,则交互库会返回 $p_1 + p_2 + p_3$,否则交互库会返回 $p_1 + p_2 + a_u$,那么显然我们无法区分的值为 $p_1,p_2$,我们需要还原剩下的值。
$p_3$ 的值可以通过解方程来求出,那么如果只有三个 $\ge p_3$ 的 $a_i$ 是好做的,在这里不再赘述,考虑有 $>3$ 个 $a_i$ 的值 $\ge p_3$ 的 $a_i$,即有很多个值为第三大的数,此时我们需要做的是从这些数中区分 $p_1,p_2$,考虑怎么 check 一个点 $v$ 是否值为 $p_3$,只需要构造一条链,链的两个端点为两个值 $\ge p_3$ 的点,在链的中间位置挂一个点 $v$,那么此时若这颗树的权值为 $\bigg( \displaystyle\sum_{i=0}^{n-1} a_i \bigg) - p_3$ 时说明点 $v$ 的值为 $p_3$,反之说明其值不是 $p_3$。
考虑更进一步的情况,具体地,发现我们可以把一些未确定是否是 $p_3$ 的点都挂在中间来一起 check,每次选择未确定的点中一半的点挂在链中心,只需要 $2 \log n$ 次在线询问即可完成此题。