只需要关心相邻两个球的间距,设为 \(d_i\)。构造势能函数 \(f(d_i)\)。假设 \(d_i\) 可以为负数,则需要满足
\[\sum_{i=1}^nf(d_i)=1+
\dfrac{1}{n}\sum_{i=1}^n\left(\sum_{j=1}^nf(d_j)-f(d_i)-f(d_{i+1})+f(d_i+1)+f(d_{i+1}-1)\right)
\]
化简后得到
\[\sum_{i=1}^n\left(2f(d_i)-f(d_{i}-1)-f(d_{i}+1)\right)=n
\]
设差分数组 \(g(x)=f(x)-f(x-1)\),则
\[\sum_{i=1}^n\left(g(d_i)-g(d_i+1)\right)=n
\]
由于 \(\sum d_i=m\),不妨将 \(n\) 按比分配一下,\(g(x)-g(x+1)=\frac{n}{m}x\),则上式成立。
不妨继续设 \(g(0)=f(0)=0\),推出 \(g(x)=-\frac{n}{m}\binom{x}{2}\),\(f(x)=-\frac{n}{m}\binom{x+1}{3}\),发现最初的等式会将 \(d_i=0\) 的贡献抵消,因此不用管 \(d_i\) 是否为 \(0\) 了。
答案即为 \(\sum f(a_{i+1}-a_{i}) - f(m)\)。
令 \(m=\sum a_i\),设势能函数 \(f(a_i)\),需要满足
\[\sum_{i=1}^nf(a_i)=1+\sum_{i=1}^n\frac{a_i(a_i-1)}{m(m-1)}f(a_i)+\sum_{i,j\leq n,i\neq j}\dfrac{a_ia_j}{m(m-1)}\left(\sum_{k=1}^nf(a_k)-f(a_i)-f(a_j)+f(a_i+1)+f(a_j-1)\right)
\]
化简后得到
\[\sum_{i=1}^n\left(2a_i(m-a_i)f(a_i)-a_{i}(m-a_i)f(a_i-1)-a_{i}(m-a_i)f(a_i+1)\right)=m(m-1)
\]
由于 \(\sum a_i=m\),不妨按比分配一下,即
\[2x(m-x)f(x)-x(m-x)f(x-1)-x(m-x)f(x+1)=\frac{x}{m}m(m-1)=x(m-1)
\]
化简后得到
\[2f(x)-f(x-1)-f(x+1)=\frac{1}{m(m-x)}\binom{m}{2}=\frac{m-1}{m-x}
\]
设差分数组 \(g(x)=f(x)-f(x-1)\),则
\[g(x)-g(x+1)=\frac{m-1}{m-x}
\]
设 \(f(0)=g(0)=0\),则可以递推出 \(f(a_i)\),但是 \(f(m)\) 不能递推。
\[f(m)=\sum _{i=1}^mg(i)=\sum_{i=1}^m\sum_{x=0}^{i-1}-\frac{m-1}{m-x}=\sum_{x=0}^{m-1}-\frac{m-1}{m-x}(m-x)=-m(m-1)
\]
答案即为 \(\sum f(a_i) - f(m)\)。
昨天刚写这篇博客今天模拟赛就考到了,现在有一题是自己独立做出来的了!(
设 \(c_i\) 表示颜色为 \(i\) 的球的个数,设势能函数 \(f(c_i)\),枚举一次操作第 \(i\) 种颜色选了 \(d_i\) 个,设集合 \(S\) 为新生成的颜色集合,则(这个式子大概不用看,有点太丑了)
\[\sum_{i=1}^n f(c_i)=1+\frac{1}{2^n}\left(\sum_{d_{1}\leq c_1}\sum_{d_2\leq c_2}\dots\sum_{d_n\leq c_n}\sum_{|S|=\sum d_i}\left(\sum_{i\not\in S}f(c_i-d_i)+\sum_{i\in S}f(c_i-d_i+1)\right)\prod_{i=1}^n\binom{c_i}{d_i}\right)
\]
和上面两题类似,我们只关心某一个 \(c_i\)。假设当前颜色有 \(x\) 个球,枚举这个颜色选了 \(y\) 个球,剩下的 \(n-x\) 个球其实不关心它们的颜色,只关心选了 \(s\) 个,则当前颜色有 \(\dfrac{y+s}{n}\) 的概率在集合 \(S\) 中。
\[f(x)=\frac{x}{n}+\frac{1}{2^n}\left(\sum_{y=0}^x\sum_{s=0}^{n-x}\binom{x}{y}\binom{n-x}{s}\left(\frac{y+s}{n}f(x-y+1)+\left(1-\frac{y+s}{n}\right)f(x-y)\right)\right)
\]
注意到这个式子只和 \(f(0),f(1),\dots,f(x),f(x+1)\) 有关,设 \(f(0)=0\),将 \(f(x+1)\) 作为主元即可按照这个式子 \(O(n^3)\) 求出每个 \(f\),简单优化一下可做到 \(O(n^2)\)。