めんどくさがり屋な私がAtCoderを1年間続けてみた

よくサボります。愚痴多めです。楽をしたいです。

AtCoder 58日目 要約する力

今日行ったこと

・ABC152 A-AC or WA →〇

・ABC152 B-Comparing Strings →〇

・ABC152 C-Low Elements →×

f:id:shinchan03:20210524182828p:plain

 

朝、しっかり時間を確保して取り組むことができた。

しかし、昨日4時起きを宣言していつもより一時間早い4時に起きたものの、

「目的のない早起き」であることに困惑してしまった。

いつもできないやりたいことをやろう・・・と思ったものの、一番やりたいことが

「寝ること」だった。笑

明日からはまたいつも通りでいいかな。

 

しかし、今日セルフでコンテストを行って気づいたことがある。。。

「要約力ってめちゃめちゃ大事じゃない・・??!」

ということ。

C問題が難しく、まず理解するのに時間がかかった。

C問題をそのまま書くと、

f:id:shinchan03:20210524184605p:plain



「どういう意味・・・?」

数式を見ると目が滑る私としてはこの程度の文章でも理解するのが難しい。

入力例も参考にしつつ10分ぐらい眺めているとだんだん理解できてきた。

つまり、

「PjがすべてPi以上であればOK!」ということだと理解した。

そしてそれを実装すべく全探索で実装を試みる。

なんとか実装し、コードを提出したら、当然のごとくTLE。

N<=2 × 10^5と書いてあるのだから、

二重ループでさえ、20万×20万=400億とおりの実行が必要なのだから、TLEで当然である。。。

 

じゃあ最小値を探し出してそれとPiを比較すればいいんじゃね?と思い、実装を試みるも、うまく実行できず時間切れ。

解答を見てみると、

驚くほどシンプルなコードが。。。

いつもなら、「あー、そういうことね。理解した。なんとなくイメージできたからOK」としていたが、この問題が解けないことがあまりに悔しかったので、なぜこの解答ならOKなのか、再度実装できるかまで時間をかけて考えてみた。

そうしたら、答えがだんだんわかってきた。

「PjがすべてPi以上であればOK!」

をさらにかみ砕き、

「Pjの最小値がPiであればOK!」

まで掘り下げているではないか。

この発想、まったく考えなかったわけではないが、しっかり考えることができていなかった。読み替えるだけでこんなにも問題をシンプルにすることができるのか・・・と感心してしまいました。

 

この気づきがいつか実を結びますように・・・(笑)

明日もがんばる。