异或
从低到高第 \(i\) 位的值每隔 \(2^i\) 个数变化一次,于是第 \(i\) 位对答案的贡献是 \(\left\lfloor \dfrac{n}{2^i} \right\rfloor\),把每一位贡献加起来。
赌神
幕后黑手的策略是尽可能保证剩下球的颜色多一些,否则最后颜色少的时候会导致赌神能带走的筹码非常多。
赌神为了防止幕后黑手根据自己的方案作出对应,他最优应当按照剩下球不同颜色数量的比例去押筹码。
这样我们就可以用一个优先队列维护剩下的球,然后每次计算贡献即可。
路径
首先考虑把 \(k\) 次方转化掉,利用第二类斯特林数的性质
\[n^k=\sum^{\min(n,k)}_{i=1}\dbinom{n}{i}\times i! \times {k \brace i}
\]
考虑其组合意义,等式左边可以理解为将 \(k\) 个球放入 \(n\) 个盒子的方案数,对于每个球有 \(n\) 种可能,盒子与球都是有差别的。
等式右边我们理解为枚举盒子,从 \(n\) 个盒子中选 \(i\) 个,然后将 \(k\) 个球划分为无差别的 \(i\) 个集合,所以我们要乘上 \(i!\) 把盒子的差别补上。
所以我们可以把原式化简,设 \(S(u)\) 为 \(u\) 到其他点的距离的 \(k\) 次幂之和,
\[\begin{aligned}
S(u) &= \sum^{n}_{v=1}\operatorname{dist}(u,v)^k \\
&= \sum^{n}_{v=1}\sum^{k}_{i=1}{\operatorname{dist}(u,v) \choose i} \times i! \times {k \brace i} \\
&= \sum^{k}_{i=1} i! \times {k \brace i} \sum^{n}_{v=1}{\operatorname{dist}(u,v) \choose i} \\
\end{aligned}
\]
设 \(dp(u,t) = \displaystyle\sum^n\limits_{v=1} \dbinom{\operatorname{dist}(u,v)}{t}\),我们分子树内和子树外两部分处理。
设 \(f(u,t)\) 表示以 \(u\) 为根的子树内的 \(\dbinom{\operatorname{dist}(u,v)}{t}\) 之和,\(\operatorname{g}(u,t)\) 表示不在以 \(u\) 为根的子树内的 \(\dbinom{\operatorname{dist}(u,v)}{t}\)。
温馨提示,以下篇幅大量用到杨辉三角递推式:
\[{n \choose m}={n - 1 \choose m} + {n - 1 \choose m - 1}
\]
首先考虑求出子树内部分的贡献,对于 \(x \in \operatorname{son}_u,v \in \operatorname{subtree}_x\),显然有 \(\operatorname{dist}(u,v) = \operatorname{dist}(x,v) + 1\),那么有
\[\begin{aligned}
f(u,t) &= \sum_{v \in \operatorname{subtree}_u}{\operatorname{dist}(u,v) \choose t} \\
&= \sum_{x \in \operatorname{son}_u}\sum_{v \in \operatorname{subtree}_x}{\operatorname{dist}(u,v) \choose t} \\
&= \sum_{x \in \operatorname{son}_u}\sum_{v \in \operatorname{subtree}_x}{\operatorname{dist}(x,v) + 1 \choose t} \\
&= \sum_{x \in \operatorname{son}_u}\sum_{v \in \operatorname{subtree}_x}{\operatorname{dist}(x,v) \choose t} +{\operatorname{dist}(x,v) \choose t - 1} \\
&= \sum_{x \in \operatorname{son}_u}f(x,t)+f(x,t - 1)
\end{aligned}
\]
显然对于 \(x \in \operatorname{son}_u,v \in \operatorname{subtree}_x\),有 \(\operatorname{dist}(x,v)=\operatorname{dist}(u,v) - 1\);对于 \(x \in \operatorname{son}_u,v \notin \operatorname{subtree}_x\),有 \(\operatorname{dist}(x,v)=\operatorname{dist}(u,v) + 1\)。
那我们现在可以处理子树内和子树外贡献的和了,考虑设 \(fa\) 为 \(u\) 的父亲。
\[\begin{aligned}
dp(u,t)
=&f(u,t)+g(u,t) \\
=&
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(u,v) \choose t}
+
\sum_{v \notin \operatorname{subtree}_u} {\operatorname{dist}(u,v) \choose t} \\
=&
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v) - 1 \choose t}
+
\sum_{v \notin \operatorname{subtree}_u} {\operatorname{dist}(fa,v) + 1 \choose t} \\
=&
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t} -
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v)-1 \choose t-1}
+ \\
&\sum_{v \notin \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t}
+
\sum_{v \notin \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t-1} \\
=&
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t} +
\sum_{v \notin \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t}
- \\
&\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v)-1 \choose t-1}
+
\sum_{v \notin \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t-1} \\
=&
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t} +
\sum_{v \notin \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t}
+ \\
&\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t -1}
+
\sum_{v \notin \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t-1}
- \\
&\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t -1}
-
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v)-1 \choose t-1} \\
=&
dp(fa,t)+dp(fa,t - 1)
-
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v) \choose t -1}
-
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v)-1 \choose t-1} \\
&=
dp(fa,t)+dp(fa,t - 1)
-
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v)-1 \choose t-1}
- \\
&\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v)-1 \choose t-2}
-
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(fa,v)-1 \choose t-1} \\
&=
dp(fa,t)+dp(fa,t - 1)
- \\
&\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(u,v) \choose t-1}
-
\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(u,v) \choose t-2}
- \\
&\sum_{v \in \operatorname{subtree}_u} {\operatorname{dist}(u,v) \choose t-1} \\
=&
dp(fa,t)+dp(fa,t - 1)-2f(u,t-1)-f(u,t-2) \\
\end{aligned}
\]
那我们就可以递推预处理斯特林数和阶乘,之后换根 DP 求解。
树
还没改,如果日后哪天没有模拟赛的话会改。