AtCoder Beginner Contest 037 D : 経路

abc037.contest.atcoder.jp

当初の方針

DPだと思うけど、きれいな(for文で書けるような)漸化式が思いつかない。

PriorityQueueを使えばトポロジカル順序ソートできるかな・・・?
→重複除去とか、dp[i][j]に値を入れる方法が分からない・・・。

解説を見て

メモ化再帰で解く。なーんだ。

Submission #923965 - AtCoder Beginner Contest 037 | AtCoder

きれいなDPが書けないと解けないって思ってしまうのよくない。
簡単なセットなのに解説を見てしまって悔しい。

いや待てよ

やっぱりPriorityQueue使えば良さそう。
大きいほうから遷移していけばいいのでは? → AC

Submission #923985 - AtCoder Beginner Contest 037 | AtCoder

FastScannerを利用しないとTLEになってしまう。なんでだろ。
クラスのnewで結構時間かかっちゃうのかな。

でも、O(HW) -> O(HW log HW)になっちゃうな。

ただ単に dp[i][j] := (j, i)を出発点とする経路の総数
と、いう定義を思いつけなかっただけみたいだな。
「DPだと思う(どう定義できるか分かるとは言ってない)」
って感じで良くないな。


整理してFastScannerなしでACできた。

Submission #923995 - AtCoder Beginner Contest 037 | AtCoder

やったこと

  • 入力とnewを別個に分ける(なんとなく)
  • よく考えたらdoneがいらない