首页 > 其他 > 详细

常见套路?

时间:2020-10-13 21:29:01      阅读:32      评论:0      收藏:0      [点我收藏+]

1.一部分需要求类似于\(\sum ans(x)^k\),k不大,\(ans(x)\)贡献每次多\(1\)

解:这种题感觉突然很常见还比较套路,在联赛出现也不是不可能/kk

直接二项式定理可以做到\(O(k^2)\)更新贡献,但是并不优秀。

考虑斯特林数展开,\(x^k=\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}i!\begin{pmatrix}x\\i\end{pmatrix}\)

如何理解?考虑组合意义,\(x^k\)\(x\)个集合放\(k\)个数的方案数(集合可以为空),那么可以枚举非空集,\(\begin{Bmatrix}k\\i\end{Bmatrix}\)\(i\)个集合放\(k\)个数(集合不可以为空),盒子不一样所以乘\(i!\)\(\begin{pmatrix}x\\i\end{pmatrix}\)是从\(x\)个集合选\(i\)个非空集。

于是这个式子变为\(\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}i!\sum\begin{pmatrix}ans(x)\\i\end{pmatrix}\)

发现每次贡献更新只会跟\(\begin{pmatrix}ans(x)\\i\end{pmatrix}\)有关,而贡献多\(1\)后,\(\begin{pmatrix}ans(x)+1\\i\end{pmatrix}=\begin{pmatrix}ans(x)\\i\end{pmatrix} + \begin{pmatrix}ans(x)\\i-1\end{pmatrix}\),于是我们维护\(\begin{pmatrix}ans(x)\\i\end{pmatrix},0\le i\le k\),每次更新贡献可以\(O(k)\)完成。

常见套路?

原文:https://www.cnblogs.com/sdlang/p/13810676.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!