ABC340 C問題 自分用解説

2024/2/10に開催されたABC340C問題Divide and Divideの自分用解説です。

桁数が大きいときTLE…

効率的なやり方がわかりませんでした。

サンプルコード(解説ページからコピペ)

大事そうなとこ解説

line7:マップ mに与えられたキーNが存在するかどうかを調べています(mapのcount関数は、与えられたキーがすで          に存在するか調べる)。もしNがm内に存在する、つまり、すでにf(N)の計算結果がm[N]に格納されている場合、その結果を返します。これにより、同じNに対する計算がよくなるんですね。

line8:実際の計算部分です。Nに対する計算結果をf(N/2)+f((N+1)/2)+Nと定義し、その結果を m[N] に代入します。

今回のようにすでに計算したものを配列に保存して、2回目以降は配列から呼び出すだけにする処理を’メモ化再帰’というらしいです。

反省

メモ化再帰、知らなかったですね。勉強になります。
でも知らなかったから解けなかったー、というほど複雑でもない気がします。発想力がたりないというか。。。

最近全然レートが超停滞中。C問題を解けなきゃ茶色にはなれなそうですね。

This article was written by maple

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です