ABC125 の反省

ABC125に出たので反省します。

A問題

掛け算と割り算をして終わり。コード

ここまで1:56。

B問題

配列を変換して足し上げて終わり。コード

ここまで4:24。

C問題

とりあえずユークリッドの互除法再帰的に使って云々すれば良いんだなと思ってやってみるが、TLE。rubyだからか?と思ってgoで書き直してみるも同じくTLE。その後、アドホックな高速化(ユークリッドの互除法の適用の仕方を変えたり、適当なメモ化をしたり)を試してみるけどTLE。最近abcの過去問埋めをしてるが、C問題を解けないことなんてほとんどないので悲しくて呆然と過ごしていた。科挙で頭が真っ白になって気が狂ってしまう人ってこういう感じなんだろうな...と思った(全然違うと思います)。

反省点として、計算量を落とすテクニックが足りていないと感じる。最初に計算しておくやり方だったり、n個の要素があった時に1個ずつ要素を増やしながら値を求めていくやり方(伝)だったり、よく見るはするが、いざという時に実践できないのでは困る。また、ユークリッドの互除法の計算量を把握せずに、闇雲に有効でない高速化を試したのもよくなかった。

ここで時間切れ。

D問題

C問題が解けなくてきれてる合間にちらちら見たがちょっと考えてわからなかったので放置。あとで順位表を見ると、CよりもDの方が全然簡単だったようだ。コンテストの途中で難しい問題があった時に順位表を見て、後の問題の難易度を見て場合によっては難しい問題を飛ばすというどうでも良すぎるTIPSを手に入れたので、次回から活かしたい。

反省

  • 実力が足りていないので過去問を解き続ける+蟻本を解き続ける
  • 計算量の落とし方を上手くなる
  • 闇雲に高速化を試みるのではなく、現状の計算量とACに必要な計算量を把握して何をすれば良いか考える
  • 難しい問題があったら順位表を見てみる

以上です。