300億円欲しい

メジャーリーグのデータ解析します

形式的冪級数のライブラリをありがたく使ってAtcoderの問題を解く (解けたら追記)

概要

競技プログラミングの強そうな人が使っている印象がある「形式的冪級数」。よくわかりませんが、名前がかっこいいので使ってみたいです。

形式的冪級数を使うにあたって、大変素晴らしいライブラリも公開していただけています。感謝しながら使っていきます。optさんありがとう。
opt-cp.com

問題リストもあります。すごい。これを参考にして形式的冪級数を使って問題を解きながら、理解を深めていこうと思います。
opt-cp.com

問題リストをAtcoder-problemsのVirtual contestに登録してみました。コンテストは2030年に終了しますので、それまでに頑張りましょう。
https://kenkoooo.com/atcoder/#/contest/show/ec28e88c-2bdf-468e-be30-ab0e599abcd7

本題

急に問題を見ても立式できないことが多かったので、以降にメモを残していきます。

各問題のメモ

TDPC-A コンテスト

準備運動。
atcoder.jp

概要

$N (\leq 100)$問ある問題の$i$番目は$p_i(\leq 100)$点。合計得点は何通りか。

立式

合計$k$点として、$T^k$の係数が非ゼロな$k$の個数を数えればいいです。

\begin{align}
(1 + T^{p_1})(1+T^{p_2})\ldots(1+T^{p_N})
\end{align}

↑を展開して、非ゼロの個数を数えます。

提出

これは簡単。
atcoder.jp

EDPC-M - Candies

これも準備運動。

概要

$N (\leq 100)$人に飴$K (\leq 10^5)$個を配る。$i$番目の人には$0\sim a_i$個配る。配り方は何通りか?

立式

$i$番目の人への配り方は、↓の多項式$f_i$に対応させます。

\begin{align}
f_i = 1 + T + T^2 + ... + T^{a_i} = \frac{1 - T^{a_i + 1}}{1 - T}
\end{align}

全員分を掛け算した$F = f_1 f_2 f_3 \ldots f_N $ の、$T^K$の係数が答えです。

提出

atcoder.jp

TDPC F-準急

これ、DPでも解きたいのですが、頭が混乱します。
atcoder.jp

概要、立式

optさんが書いてくれているので省略。賢い。
opt-cp.com

提出

スッキリです。
atcoder.jp

ABC179 D - Leaping Tak

DP+imos法で、区間更新的なことをする問題だった気がします。
atcoder.jp

概要

1マス目から$N(\leq 2 \times 10^5)$マス目まで進む。

1回の移動の際には、K個の区間 $[L_1, R_1]$, $[L_2, R_2]$, $\ldots$, $[L_K, R_K]$から1つ数字を選び、その数だけ進む。$N$マス目までの進み方は何通り?

立式

1回の移動を、↓の多項式$f$に対応させます。$[L_i, R_i]$の次数の項で、係数を1にします。

\begin{align}
f = T^{L_1} + T^{L_1+1} + ... + T^{R_1} + T^{L_2} + T^{L_2+1} + ... + T^{R_2} + ... + T^{L_K} + T^{L_K + 1} + ... + T^{R_K}
\end{align}

何回か移動するので、それを表す多項式$F$は↓。$N-1$マス進むので、$T^{N-1}$の係数が答え。簡単に表現できて嬉しい。

\begin{align}
F = 1 + f + f^2 + ... = \frac{1}{1-f}
\end{align}


元の問題には$K\leq 10$という制約がありますが、この解き方だと不要ですね。すごい。

提出

10行くらい。助かります。
atcoder.jp

ABC178 D - Redistribution

高校受験でよくやる、ボールと仕切りで考える問題ですよね。
atcoder.jp

概要

全ての項が3以上の整数である数列であって、その総和が Sであるような数列は、何通りあるか?($10^9+7$で割った余り)

立式

慣れてきました。1つの項に対応する多項式は、↓。

\begin{align}
f = T^3 + T^4 + ... = T^3 ( 1 + T + ...) = \frac{T^3}{1-T}
\end{align}

$f$, $f^2$, $f^3$, ... の、$T^S$の係数の和が答えになるので、まとめて考えればいいです。

\begin{align}
F = f + f^2 + f^3 + ... = \frac{f}{1-f}
\end{align}

$F$の$T^S$の係数が答え。

提出

7行くらい。
atcoder.jp




一旦終わり

DPを書いてバグらせて時間が溶ける...のが悲しいので、形式的冪級数でシュッと解いていきたいですね!

感謝を込めてもう一度リンクを貼ります。ありがとうございました。
opt-cp.com


以降、解けたら追記する

問題

URL

立式

式を書く

提出

ACしたコードを貼る