题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3027。
题目大意:有$n$种数,每种有$C_i$个,问你在这些数中取出$[l,r]$个,问你有多少种不同的取法,答案对2004取模。
数据范围:$n≤10$,$C_i≤10^6$,$1≤l<r≤10^7$。
我们不妨设$f(n)$表示不超过$n$的数的取法之和。
则答案显然为$f(r)-f(l-1)$,下面来推导f(x)。
显然,$f(m)$等于多项式$\Pi_{i=1}^{n} \sum_{j=1}^{C_i}x^i$[0,m]的系数和。
考虑到$C_i$很大,如果直接多项式乘法,会$T$,必须化简。
原式
$=\Pi_{i=1}^n \frac{1-x^{C_i} } {1-x}$。
$=\frac{\Pi_{i=1}^{n} (1-x^{C_i})}{(1-x)^n}$。
$=\Pi_{i=1}^{n} (1-x^{C_i}) \sum_{j=-1}^{\infty} \binom{n+j}{n-1}$
考虑式子的前半部分,不难发现,该部分最多只有$2^n$个位置是非零的,显然我们只需要处理这部分,并不需要对整个多项式做乘法。实现该步骤一个dfs即可。
对于后半部分,假设求f(m)过程中前面通过dfs连乘出的单项式次数为k,那么需要累加的答案显然多项式$\sum_{j=-1}{
(未完待续)
原文地址:https://www.cnblogs.com/xiefengze1/p/9059240.html
时间: 2024-10-08 14:46:41