【Atcoder日記】ABC #333
こんにちは。ようやく茶色帯が見えてきたRockinWoolです。次でようやく参加10回目となってRateも上がりやすくなるはずなので、ここらで本腰を入れて頑張っていきたい所存です。さて、今回はAtcoder Beginner Contest #333付近の回答と詰まった部分をまとめてみました。直近の正答数は3, 3, 2と来ているので、次は4問クリアできるようにしたいです。 #330-A Three-Threes NをN個並べるという超単純な問題。過去1簡単だったのでは?と感じました。2分ほどで正答できました。 #330-B Pentagon 問題自体は解けないことも無いのですが、B問題にしては難しかった気がします。入力がstring型なので、それを数字に置き換える関数を用意してあげる必要がありました。もしかしたらChar型の扱いに長けた人なら’A’で引いた値をint型で扱えば良いとか気づくのかもしれませんが、エラーが怖かったので力技で変換しました。 B問題にしては行数が多いので、結構難易度が高かった印象です。ちなみに半分以下の行数で済ましている人もいて、その人の回答はこんな感じでした。 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);の行は単純にパフォーマンス向上のために記載している呪文と思えば良さそう。C標準の標準入出力との同期を解除してcinやcoutを使用する際に呼び出されないようにするそうだけど、ChatGPT曰く保守性の観点から競プロ以外では推奨しないとのこと。whileの必要性はよくわからないけど、ともかく文字列を読み取って2つの文字間の絶対値を取れば長さになるという算段は同じ。かなりスッキリ書けていて羨ましいですね。ちなみに、自分はここで何回かREを連発しました。原因はmain関数のreturn値を1にしていたせいです。気をつけましょう。 #330-C Repunit Trio 時間以内にとけなかったのですが、解答をみたら衝撃の短さだった問題。ともかく1の桁の数字は3になるという法則があるので、1が0~N個、2が0~M個、3が1~L個の出力になっていて、なるべく少ない個数で構成されるようにすれば良いとのこと。いや、気づかないよそんなの。 おわりに とりあえず3問正答を目指して精進しようと思っていますが、最後の問題は美しすぎる解き方でしたね。こうやって脳みそを使えればもっと高みを目指せるんだろうなあ。もっと勉強しなければと思いました。それでは、また次回。