X
皎月半洒花
2022-07-10 01:33:43
讲课的时候偶然发现的一道题。其他题解好麻烦啊!
首先思考:数轴上有一堆点上站着人。他们走到哪个点的路程和是最小的呢?
我们可以通过许多方法证明,应当取中位数。所以我们一定是想走到中央。
我们考虑,走 $\leq$ 一步就能到中央的格子数目是 $9$,而走 $\leq$ 两步就能到中央的格子数是 $21$。
但其实,走两步到中心点其实就是走一步到距离中心 $=$ 一步的 $8$ 个点再走一步而已。
据此我们可以 DP。设 $f_i$ 表示走 $\leqslant i$ 步就能到中心点的点数,那么 $f_0=0$。
$$
f_i=f_{i-1}+((2\times i+1)\times 4-4)\times i
$$
答案最后就是 $f_{\lfloor\frac{n}{2}\rfloor}$。
但其实展开就可以发现,答案就是自然数平方和的 $8$ 倍的第 ${\lfloor\frac{n}{2}\rfloor}$ 项。所以答案应该是:
$$
\dfrac{{\lfloor\frac{n}{2}\rfloor}\times({\lfloor\frac{n}{2}\rfloor}+1)\times (2\times {\lfloor\frac{n}{2}\rfloor})+1}{6}
$$
复杂度 $O(T)$ 而不是 $O(n+T)$。
为了防止爆 `long long` 可以写成 `ans = 1ll * (m + 1) * m / 2ll * (2ll * m + 1) / 3 ;`