求めるのは(N−1)!通りの移動に関する距離の総和である。
f(p,q):=xpからxqへの移動による距離の総和、とする。この移動が起こるのは、スライムp+1,...,q−1が自由な順番で選ばれ、そのあとでpが選ばれ、さらにそのあとでqが選ばれるケースである。この選び方を数えると、N−1箇所の中からq−p+1箇所を選び、その中の始めのq−p−1箇所にスライムp+1,...,q−1を自由な順番で配置し、末尾の2箇所にスライムp,qを配置し、残ったN−1−(q−p+1)箇所に残りのスライムを自由に並べればよい。つまり、
f(p,q)=(q−p+1N−1)(q−p−1)!(N−1−(q−p+1))!×(xq−xp)=(q−p+1)(q−p)(N−1)!(xq−xp)
ただし、q=Nの場合はスライムqが選ばれないので
f(p,q)=(N−pN−1)(N−p−1)!(N−1−(N−p))!×(xN−xp)=(q−p)(N−1)!(xN−xp)
となる。fの総和を単純に計算すれば部分点が取れる。
上の式でxq−xpに掛かる係数は幅q−pのみによって決まっているので、同じ幅について(q=Nの場合に関して)整理してみる:
==p=1∑N−1q=p∑N−1f(p,q)/(N−1)!2⋅11(x2−x1)+...+2⋅11(xN−1−xN−2)+3⋅21(x3−x1)+...+3⋅21(xN−1−xN−3)+..+(N−1)⋅(N−2)1(xN−1−x1)2⋅11((x2+x3+...+xN−1)−(x1+x2+...+xN−2))+3⋅21((x3+x4+...+xN−1)−(x1+x2+...+xN−3))+...+(N−1)⋅(N−2)1(xN−1−x1)
((N−1)!は共通なので除いて整理した。) これは累積和で処理できる形になっている。
満点に達するのに3時間かかった。解説の方針のほうが確かにずっと明快だけれど、上の整理くらいはさっさとできるようになりたい。