二项式定理 + 矩阵快速幂.
设 $f(i)$ 表示前 $i$ 个人带来的礼物总和,显然有 $f(0)=0,f(i)=2f(i-1)+i^k$ .
答案为 $f(n)-f(n-1)=f(n-1)+n^k$ ,于是只需要设法求出 $f(n-1)$ .
用矩阵快速幂加速递推,需要将 $i^k$ 也通过一些元素线性表示出来.
考虑将它用二项式定理展开,
$$
i^k=((i-1)+1)^k=\sum_{j=0}^k (i-1)^j \binom{k}{j}
$$
可以发现 $i^k$ 可以由 $(i-1)^0,(i-1)^1,\dots,(i-1)^k$ 线性表示.
于是向量中维护 $i^0,i^1,\dots,i^k,f(i)$ 这些元素,用矩阵快速幂加速转移.
时间复杂度 $O(k^3\log n)$ .
1 | //%std |