ABC214を振り返る
・実を言うと、今日は今年になって競プロを初めて二週間目なのだ。
・確かこの記事を書いた日が今年初だったはずなので、丁度二週間目になる。
(下の記事を8/1に書いて、今日が8/15だから丁度二週間だね。)
・昨年もちょこちょこ遊んでいたが、よくわからないままコンテストに出て、よくわからないままPythonをいじって、よくわからないままよくわからないまま時間が進み、よくわからないままよくわからないままよくわからないまま辞めてしまった。
・で、じゃあなんで再開したのかと言われたら自分でもよくわかってなくて、特技や趣味が何もない自分に嫌悪感を抱いたからなんじゃないかと思う。
・「特技は・・・特にといったことはないんですけど、独学でプログラミングやってます。競プロっていうのやってます。因みに○○コーダーです」とか言えたら普通にかっこいいよね!
・因みにバイトもやっていて、最近は異様に忙しいのもあって中々取り組む時間が少なくなったりしてたりで辛い;;
ぼくにお盆休みなんてのはないんですよ・・・・・(お盆休み1日勢)
・今後の人生を考えるとストレスまみれで睡眠不足のまま出勤して、今日みたいな仕事がない日だと9時間以上は寝ないと頭がすっきりしないぐらい・・・。鬱かよ(笑)ってなります^^;
・まぁ、そんなぼくの諸事情なんてのはクソ程どうでもよいものなので、早速今回のABC214について振り返っていくことにしよう。
━━━━━━━━━━━━━━━━━━━━━━
・といっても、何を書けばいいのかよくわかっていない^^;
・因みに今の自分の実績は以下のようなもの
▼問題数を熟せてなくて草
▼難問題にチャレンジしてなくて草
・前回のABCはA,Bしか解けず、C問題は座標圧縮を行う問題だったため、無念の結果を残してしまったんだけど、今回は無事C問題を解くことができました。やったぜ。
・今回のC問題の問われる知識はfor文のみで、外部からのライブラリを呼び出す必要は全くない。
・なのでサクッと解けて歓喜に満ちちゃったんだけど、時間が経つにつれて「やっぱC問題は簡単だったのでは?」と焦ってしまった。(笑)。for文2回分回せばいいからね・・・。
・とはいうものの、結果的にC問題はdiff400くらいだったんで、そこそこの難度だったらしい。解けてよかった。
・で、じゃあなんで今回のC問題が解けたかについては過去に解いた問題に似てたから、っていうのが理由として挙げられる。
▼今回のC問題
▼似てる問題1
▼似てる問題2
・上記のような、「ひとつがふたつのものに関与する且つ数値で処理する」タイプの問題min,maxが活躍しやすいのは把握済みで、特に本問は「n番目のすぬけ君はn-1番目のすぬけ君かn番目の高橋君のどっちかから宝石を貰う」と解釈され、なおかつ「どっちかから時間(数値)が早い(小さい)ものから受けとる」⇒「n番目のすぬけ君はmin(n-1番目のすぬけ君から受け取る時間,n番目の高橋君から受け取る時間)から宝石を貰う」と解釈することができ、ここまで書けばコーディングもすらすらできることだろう。
・さて、本問Cはそこまで書いて提出するとWAを喰らってしまう。
・円循環になっているから。
・例えば、どんなにすべてのすぬけ君が1秒後に宝石を渡そうが、高橋君から貰わない限りその操作ができないから、以下の入力例とその出力を考えると分かるのだが
入力:
4
4 3 2 1
100 100 100 1
出力:
2
6
9
1
・となる。他の例でも考えるといいのだが、これがfor文1回分じゃ足りない理由なので、2回回さなければならない。
・A,B問題については簡単すぎてお話にならないのでここでは特には書かないことにする。単なる三重for文を回せばよいだけ。
・残念だったのはD問題が解けなかったことかな。まぁ、まともに競プロを初めて二週間でD問題を解ける方がおかしい気もするので、今回はC問題だけでも解けたことを喜んだ方がよさそう。
・目標は特にはないけど、お世話になってる方が青コーダーなので、自分も青コーダーまでは精進したい。
■■■今後とも何卒よろしくお願い申し上げます!■■■