1. 程式人生 > >bzoj 3027: [Ceoi2004]Sweet (生成函數)

bzoj 3027: [Ceoi2004]Sweet (生成函數)

表示 href 化簡 ble geo sweet target $1 problem

題目傳送門: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}{

(未完待續)

bzoj 3027: [Ceoi2004]Sweet (生成函數)