# yukicoder No.2485 Add to Variables (Another) ## 問題 [No.2485 Add to Variables (Another)](https://yukicoder.me/problems/no/2485) ## 解説 操作のうち $A_N$ が増加するのは下二つのみであるから,それらは合わせて $B_N$ 回行われる${}:(\star)$. 数列 $X=(X_1,\dots,X_N)$ を $X_1=A_1,X_i=A_i-A_{i-1}\ (2\leq i\leq N)$ で定め,$A$ に対する各操作を $X$ に対して言い換えると次のようになる. - 何もしない. - 整数 $k\ (1\leq k\leq N-1)$ を選び,$X_1$ に $1$ を,$X_{k+1}$ に $-1$ を足す. - 整数 $k\ (2\leq k\leq N-1)$ を選び,$X_k$ に $1$ を足す. - $X_1$ に $1$ を足す. 上二つ/下二つをまとめて次のようになる. - 整数 $k\ (1\leq k\leq N)$ を選び,$X_1$ に $1$ を,$X_k$ に $-1$ を足す. - 整数 $k\ (1\leq k\leq N-1)$ を選び,$X_k$ に $1$ を足す. $(\star)$ より一つ目の操作は $M-B_N$ 回行われるから,数列 $C=(C_1,\dots,C_N)$ を $C_1=B_1-(M-B_N),C_i=B_i-B_{i-1}\ (2\leq i\leq N)$ で定めると,$X=(0,\dots,0)$ に対し次のいずれかの操作を $M$ 回行って $X=C$ とする方法の数を求めればよい. - 整数 $k\ (1\leq k\leq N)$ を選び,$X_k$ に $-1$ を足す. - 整数 $k\ (1\leq k\leq N-1)$ を選び,$X_k$ に $1$ を足す. その値は形式的冪級数を用いれば次のように表現できる(多項係数を考える). \begin{align*} [x^M]M!\prod_{k=1}^{N}\sum_{i\geq 0}\frac{1}{i!(i+|C_k|)!}x^{2i+|C_k|} \end{align*} これは計算量 $O(NM\log M)$ で計算できる.なお[(Another)でない方](https://yukicoder.me/problems/no/2484)もこれで通る.
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.