AtCoder Beginner Contest 139

結果

順位   653rd / 5899
パフォーマンス   1568
レーティング  1883 → 1855(-28)

 5完遅解きではこんなもん。もうmerom氏に抜かれそう。

A - Tenki

 for使っちゃった。

 提出

B - Power Socket

 A問題じゃん。

 提出

C - Lower

 えー、やるだけと思ったらforを抜けるタイミングで答えを更新していなくて1WA。こういう端から見ていって特定条件のとき値がリセットされてそのときに答えを更新するっていうものについて、ループ最後まで条件が来なくてループ終わった後に取り直すという記述を忘れがち。リセットタイミングだけじゃなくて常に答え更新で良いのか。そうか。

 提出

D - ModSum

 勘でこうだろって思った。サンプル2がそうっぽいもん。無証明。

 提出

E - League

 愚直で通るんじゃないかという気がして書いてみたが当然TLE。(一応頑張れば通るらしいが本番中そこに注力する決断はできない)

 なんか考えていたらdp[i][j] := i番目の人がj回目に対戦する相手と対戦し終える最小日数というのが見えて実装し始めるが、遷移がよくわからなくて混乱しまくった。最終的にはメモ化再帰で実装してループは再帰回数で無理やり判定するというようなことをして通した。

 DAGに帰着できそうという発想だったので想定解からそこまで離れているわけでもないとは思うが、明確にグラフに落として考えられないと実装が綺麗にならない。ついでに答えを取得する部分でmaxを取り忘れていて余計に3WA出した。注意力に欠けていた。

 提出

F - Engines

 残り28分くらいで突入したけどなんもわからず、直前のchokudai contestの印象が残っていたので適当に焼きなましっぽいものを書いて投げたけどまぁそれは通るわけがない。

 解説PDFを読んで、まぁこれは全然気づいていなかったなという感じの方針だった。AtCoderがあんまり幾何出さないのもあってあんまり幾何の経験値がないな。

 角度をyの正負で場合分けしてacosで求めようとしたらなんかWA。std::atan2を使えば何も考えずできたしAC。めっちゃ便利。最初引数をx, yの順番で与えていたらCLionが警告を出してくれて、それを検知できるの賢いなぁって思った。

f:id:tokumini:20190902084937p:plain

 提出