你有一個數字 \(x\) 和若干個操作,每個操作是 \(+a_i\) 或者乘 \(\times a_i\) 中的一種。你可以重新排列這些操作的順序,然后對數字 \(x\) 執行這些操作。
比如說三個操作是 \(+a_1,+a_2,\times a_3\)。如果按順序執行這三個操作,那么得到的結果是 \(((x+a_1)+a_2)\times a3\)。如果排列成 \(+a_2,\times a_3,+a_1\),那么得到的結果是 \(((x+a_2)\times a_3)+a_1\)。
我們會發現,有一些操作順序計算出來的結果是本質相同的,比如說 \(+a_1,+a_2,\times a_3\) 和 $+a_2,+a_1,\times a_3 $這樣運算下來結果是一樣的。我們認為兩個操作順序計算的結果本質相同,當且僅當無論代入什么數,計算出來的結果都是一樣的。
請問有多少種本質不同的操作序列。換句話說就是最多能找到多少個操作序列,使得這些操作序列任意兩個都不是本質相同的。由於答案很大,輸出對 \(10^9+7\) 取模的結果。
在這個題目中,我們只會給出加法操作和乘法操作的個數,分別是 \(n,m\),並不會給出具體的順序和數字。容易發現,答案與具體的順序和數字無關。
共 \(T\) 組詢問,\(1\leq T\leq 10^4,1\leq n,m\leq 3000\).
把 \(x\) 個有標號球放進 \(y\) 個有區分非空盒子方案數 \(=\ y!\times\) 把 \(x\) 個有標號球放進 \(y\) 個無區分非空盒子方案數 \(=\ \begin{Bmatrix}x\\y\end{Bmatrix}y!\),設其為 \(calc(x,y)\)。
其中 \(\begin{Bmatrix}x\\y\end{Bmatrix}\) 為第二類斯特林數。
考慮枚舉有 \(i\) 個連起來的乘法塊,那么其方案數為 \(calc(m,i)\).
\(i\) 個乘法塊形成了 \((i+1)\) 個空隙,兩邊的 \(2\) 個可空,中間的 \((m-1)\) 個非空。
\(n\) 個加法有三種方法:
-
只放中間 \((m-1)\) 個(欽點兩個可空的都不放):\(calc(n,i-1)\);
-
欽點一個可空的為非空的,另一個不放:\(calc(n,i)\times 2\);
-
欽點兩個可空的為非空的:\(calc(n,i+1)\).
故答案為
時間復雜度為 \(\mathcal{O}(m^2+Tm)\).