Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

AtCoder Beginner Contest 139

4AC2WA。

そして・・・

f:id:mdstoy:20190901231008p:plain

レートは前回比+1で、水色まであと1というミラクル!?

そんなミラクルいらんて・・・。

各問題

A - Tenki

SとTのi文字目が同じなら的中です。それを3日分確認するだけの簡単なお仕事です。

B - Power Socket

タップを差すたびに、一口消費してA口新たに増えるので、差し引きでA - 1増えていきます。そこから計算式を立てて求めるもよし、ループで一つずつタップを増やしていくもよしです。

私は実装がちょっとまずくて、B==1のとき0が返らないという恥ずかしいバグで1WA出してしまいました。

C - Lower

単純にループを回して、右隣が今いるマスの高さ以下なら移動数を増やし、そうでなければリセットします。リセットした時に、それまでの記録を上回っていれば保存しておきます。 最後まで終わった時に保存されている記録が答えです。

B問題っぽいですね?

D - ModSum

{1, 2, 3,..., N}を一つずらして{N, 1, 2,..., N - 1}という数列を作るのが最適です。 こうするとN % 1 + 1 % 2 + 2 % 3 + ... + (N - 1) % Nのように初項以外すべてで最も効率のいい「割る数 - 1」の余りが取れるわけです。

なお私はintで計算して無事1WAを出しました。本当に学習能力がないですね?

E - League

ひたすらループでなめていく愚直解でTLEをもらって、改善できずに終了でした。

F - Engines

単純に4方向に分けて考えて、例えばx正y正方向に進むなら、x負y正またはx正y負は足してみて得するなら採用みたいな方針でやると、だめです(だめでした)。 多分ちゃんとベクトル計算をしないといけないのだろうなとは思いましたが、死ぬほど幾何が苦手な私には無理ゲーでした。

まとめ

数学、数学か・・・。

しょうもないコーナーケースのバグか、うっかりintでオーバーフローのどちらかがなければ水色復帰していたというのはつらい。 ちなみに、このレベル帯ですと、1WAでパフォが100前後落ちるようです。本当につまらないWAには気をつけましょう・・・。