ABC180F - Unbranchedを形式的冪級数を使って解く
形式的冪級数(FPS)でやる解法で解いたので、まとめてみます。
問題リンク↓
考察
グラフに課される条件のうち、最初の2つの条件
- 自己ループを持たない
- すべての頂点の次数が以下である
から、考えるべきグラフは直線グラフか頂点数2以上のサイクル(を集めたもの)です。そして、3つめの条件
- 各連結成分のサイズを並べたとき、その最大値がちょうどである
についてですが、典型知識として、最大値がちょうどのものの数え上げは、(最大値が以下であるものの個数)-(最大値が以下であるものの個数)を求めれば良いです。ここまでは公式解説の通りです。
条件を満たすグラフで、連結成分のサイズの最大値が以下であるものについて考えます。まずは、各連結成分のサイズの振り分け方を決めます。サイズの直線グラフの個数を、サイズのサイクルの個数をとおくと、頂点数と辺の数の条件から、
という関係があります。この2式を整理して、
としておきます。
次に、各連結成分の頂点に番号を振ることを考えましょう。サイズの直線グラフの各頂点に与える番号を個とってきます。これらを各頂点に並べる方法は、反転して同じになるものを考慮してのとき通り、のとき通り、のとき通りです。これを一般にとおきます。
サイクルについても同様に、のとき通り、のとき通り、のとき通りです。これを一般にとおきます。
さらに、辺にラベルがついてないことから、同じ頂点数、同じタイプの連結成分は区別しません。これをふまえて、求める個数は
です。和の範囲はが先ほどの条件を満たすようにとります。
形式的冪級数を使う
さて、この和の中にある積の部分ですが、なにか見覚えがないでしょうか?そうですね、expの級数展開の項に出てくるやつですね。以下のものを考えます。
これのの指数は、それぞれ条件よりとなります。そしてこれは、
のの項にあたります。それぞれの級数はまさにexpの形そのものなので、それを用いて整理すると、
というとてもすっきりした形になります。これのの項を求めたいのですが、変数が2つあると複雑なので、偏微分的な要領でを定数とみなしての項を求めましょう。exp型なので、この場合はで回偏微分すれば良いです。結局、
のの項を求めればよいことになります。これをでも同様に行い、その結果をのときの結果から引けば答えが求められます。
ですが、が小さいことと、形式的冪級数の逆数などが登場しないことから、FPSのライブラリを持ち出さずにexpの冪級数展開を用いて計算したりしても間に合います。