参考文献
- Elegia さん:https://codeforces.com/blog/entry/92183
- 本記事で扱っているアルゴリズムはここで紹介されているものとほぼ同一です.ただし以下の点について,定式化や議論を変更・追加しています.
- 分母
について説明し,EGF との合成が任意の環で定義できることを確かめた.それに応じて計算方法の導出も変更した. - 多項式との合成を EGF との合成に帰着する議論(簡単)について述べた.
- 分母
- 本記事で扱っているアルゴリズムはここで紹介されているものとほぼ同一です.ただし以下の点について,定式化や議論を変更・追加しています.
- Library Checker
EGF との合成(問題の定式化)
この記事では
非負整数
は, の空でない集合への分割 をわたる の和である.
このような集合への分割において,
このことから,ひとつの分割から添字を並べ替えることで得られる
は, の空でない集合への分割 (ただし )をわたる の和である.
以上により
EGF との合成の計算
指数型母関数
計算手順は次の図で表すことができます.図では

簡単のため

まず,
の 項目を用いて, の 項目を計算する. の 項目を用いて, の 項目を計算する. の 項目を用いて, の 項目を計算する.
を 個の部分集合 ( ) に分割する方法を考える. は,そのようなすべての分割 に対する の和である.
ここで,
が分かります.これは,subset convolution と非常によく似ており実際,
の先頭 項と, の 項目から 項目の subset convolution が, の 項目から 項目までと一致する.
以上を適切に実装すれば,
全体の計算量は
実装の定数倍など
を降順に計算すれば,よくある dp テーブルの次元削減テクニックが使えます.つまり ごとの 次元配列(全体で 次元配列)を用意せずとも, つの 次元配列で事足ります.ただし使う列の長さが指数的に長くなるため,一般的な 次元配列上の dp の場合と比べて恩恵は少ないと考えられます. の同じ部分を繰り返し subset convolution に用いるため,同じ列のランク付きゼータ変換が複数回必要になります.これを 1 度しか使わないことでも定数倍改善が可能ですが,https://judge.yosupo.jp/problem/polynomial_composite_set_power_series で実装した限りでは,やはり恩恵は大きくはないように見えます.
exp との合成の計算
この場合には任意の

多項式との合成の計算
あるいは多項式の Taylor 展開