組み合わせ問題を多項式の問題に解釈して解くのが好きなので、今回AtCoderBeginnerContest215のG問題を多項式の問題に解釈してみようと思います。(数学の記事のつもりなのでプログラムの実装に関する部分は省略して考察だけしていこうと思います。)
Colorful Candies
(
https://atcoder.jp/contests/abc215/tasks/abc215_g
)
個のキャンディーが左右一列に並んでいます。
について、左から番目のキャンディーの色はです。
高橋君は並んでいる個のキャンディーのうち個を選び、選んだ個のキャンディーをすべてもらいます。
ここで、個のキャンディーから個を選ぶ組み合わせの個数は個ありますが、高橋君は通りの選び方のうちいずれか一つを等確率でランダムに選びます。
高橋君がもらうキャンディーに含まれる種類数の期待値を求めてください。
種類数の期待値は種類数の総和を選び方の総数で割ると求まります。種類数の総和を求めていこうと思います。
=「個の中から個選んだ時色の種類数が種類になる選び方の総数」となるような多項式を考えていきます。個の中に色のキャンディーが個あるとします。結論だけ先に言うと、は以下のようになります。
例えば,個の中に赤、青、黄がそれぞれ個あるとすると,です。
色ごとに個あるうち何個選ぶかを独立に決めてきます。上の例で,黄色キャンディ個のうち個選ぶとするとそれぞれ選び方は通りであり、種類数(の指数)への寄与はであり,個数(の指数)の寄与はそれぞれであるので,という多項式が思いつきます。すべての色について同様に多項式を考え、積をとるととなります。
あとはここから選ぶ個数(の指数)を固定したときの種類数(の指数)の総和を求めていきます。について微分すると、の指数が係数としておりてくるので、求めたいのはです。
よって、種類数の総和は
となります。