ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Atcoder Beginner Contest 231 G - Balls in Boxes(生成函数)

2022-01-03 16:05:02  阅读:208  来源: 互联网

标签:Atcoder Balls Beginner limits coef dfrac sum aligned MOD


MARK on 2022.1.3:由于本人觉得“组合数学杂题选做”这篇博客太累赘了,故将其删除并将其中所有题解都单独开一篇博客写入。

首先列出式子:

\[ans=k![x^k]\prod\limits_{i=1}^n(\sum\limits_{j}(a_i+j)·\dfrac{1}{j!}·x^j) \]

考虑把括号里的东西拆开

\[\begin{aligned} &\sum\limits_{j}(a_i+j)·\dfrac{1}{j!}·x^j\\ =&\sum\limits_{j}a_i·\dfrac{x^j}{j!}+\sum\limits_{j}\dfrac{x^j}{(j-1)!}\\ =&\ (a_i+x)·e^x \end{aligned} \]

于是问题等价于求

\[k![x^k]e^{nx}\prod\limits_{i=1}^n(a_i+x) \]

设 \(B(x)=\prod\limits_{i=1}^n(a_i+x)\),那么

\[\begin{aligned} ans&=k!·\sum\limits_{i=0}^n[x^i]B(x)·[x^{k-i}]e^{nx}\\ &=\sum\limits_{i=0}^n[x^i]B(x)·\dfrac{n^{k-i}}{(k-i)!}·k!\\ &=\sum\limits_{i=0}^n[x^i]B(x)·n^{k-i}·k^{\underline{i}} \end{aligned} \]

分治 FFT 或者直接背包算出 \(B(x)\) 即可。时间复杂度 \(n^2\)。

int n, k, a[MAXN + 5], dp[MAXN + 5];
int main() {
	scanf("%d%d", &n, &k);
	for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
	dp[0] = 1; int res = 0;
	for (int i = 1; i <= n; i++) for (int j = i; ~j; j--)
		dp[j] = (dp[j - 1] + 1ll * a[i] * dp[j]) % MOD;
	for (int i = 0; i <= min(n, k); i++) {
		int coef = 1ll * dp[i] * qpow(n, k - i) % MOD;
		for (int j = k; j > k - i; j--) coef = 1ll * coef * j % MOD;
//		printf("%d %d\n", i, coef);
		res = (res + coef) % MOD;
	}
	printf("%d\n", 1ll * res * qpow(qpow(n, MOD - 2), k) % MOD);
	return 0;
}

标签:Atcoder,Balls,Beginner,limits,coef,dfrac,sum,aligned,MOD
来源: https://www.cnblogs.com/ET2006/p/abc231G.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有