标签:怎么 线段 问题 变换 map 组合数 时间复杂度 复杂 使用
考场上忘了怎么拆c(a,b)*c(c,a)......
后来随便想就想出来了...
先列出答案式子:
$\sum_{i=0}^{n}C_n^if(i)x^i$
f拆开
$\sum_{i=0}^{n}C_n^ix^i\sum_{j=0}^{m}a[j]i^j$
斯特林数拆后面
$\sum_{i=0}^{n}C_n^ix^i\sum_{j=0}^{m}a[j]\sum_{k=j}^{m}s(j,k)\frac{i!}{(i-k)!}$
上下乘k
$\sum_{i=0}^{n}C_n^ix^i\sum_{j=0}^{m}a[j]\sum_{k=j}^{m}k!s(j,k)\frac{i!}{(i-k)!k!}$
变成组合数
$\sum_{i=0}^{n}C_n^ix^i\sum_{j=0}^{m}a[j]\sum_{k=j}^{m}k!s(j,k)C_i^k$
交换和式
$\sum_{j=0}^{m}a[j]\sum_{k=j}^{m}k!s(j,k)\sum_{i=0}^{n}C_i^kC_n^ix^i$
考场上卡在这一步。。。
有一个公式:
$C_a^b*C_c^a=C_c^bC_{c-b}^{a-b}$
用公式化简最后的组合数:
$\sum_{j=0}^{m}a[j]\sum_{k=j}^{m}k!s(j,k)\sum_{i=0}^{n}C_n^kC_{n-k}^{i-k}x^i$
再次变换和式
$\sum_{j=0}^{m}a[j]\sum_{k=j}^{m}k!s(j,k)C_n^k\sum_{i=0}^{n}C_{n-k}^{i-k}x^i$
调整下界
$\sum_{j=0}^{m}a[j]\sum_{k=j}^{m}k!s(j,k)C_n^k\sum_{i=k}^{n}C_{n-k}^{i-k}x^i$
调整后面的和式
$\sum_{j=0}^{m}a[j]\sum_{k=j}^{m}k!s(j,k)C_n^kx^k\sum_{i=k}^{n}C_{n-k}^{i-k}x^{i-k}$
二项式展开公式:
$(x+1)^k=\sum_{i=0}^{k}x^kC_k^i$
后面的和式上下界同时减去k
$\sum_{j=0}^{m}a[j]\sum_{k=0}^{j}k!s(j,k)C_n^kx^k\sum_{i=0}^{n-k}C_{n-k}^{i}x^{i}$
二项式展开
$\sum_{j=0}^{m}a[j]\sum_{k=0}^{j}k!s(j,k)C_n^k(x+1)^k$
问题转变求$C_{n}^{0...m}$m+1个组合数的值
如果暴力求c时间复杂度很高。
但是发现相邻两个组合数$C_{n}^{i}$和$C_{n}^{i+1}$的公式只差了两个数。分解质因数后用线段树维护即可。
质因数可能较大,使用map编号。
标签:怎么 线段 问题 变换 map 组合数 时间复杂度 复杂 使用
原文地址:https://www.cnblogs.com/cszmc2004/p/13168756.html