120. AtCoder参加記録(AtCoder Regular Contest 142)
25回参加でレート 1292 です。
今回はパフォーマンス 1633 です。
ABCを通して、DEFは未解答です。Aで2ペナ。
各問題の思考過程など。
A
初回提出8分18秒、そこからACまで14分43秒。
コーナーケースに自力で気付きましょう問題。
- の末尾が 0 の場合は不適なので答えは 0。それ以外で、 を「そのまま」「ひっくり返した」数列それぞれの末尾に 0 を 0 個以上追加した数が の候補。高々12桁なのでこれを全探索すればよさそう。
- について、「ひっくり返した」方が小さくなる場合は答えは 0 になることに気付いていなかった(1WA)
- が回文的な数列になっている場合、重複してカウントしていた(1WA)
合計 2WA でした。もう少し注意深く行きたかったです。
B
23分59秒。
- 色々考えるものの、筋の良い解き方が見えない。でも、NG条件が厳しいのでそんなに難しくはないはず?とりあえず、「作った盤面が条件を満たすか?」を判定するデバッグ用の出力を追加。
- こういう問題は最終的に簡単な答えになりがちなので、思いついた法則で適当に盤面を作ってみる。すると、「順番に並べたものから、奇数列目とその右の数を入れ替える」で、なんか通りそうな雰囲気。
- でも問題ないことを確かめたので、デバッグ出力を消して提出、無事AC。
これでいいのか…?という感じですが、まぁそういう問題だったのかもしれないです。
C
49分9秒。
細かいところを詰めるのが大変な問題。
- ①と直接つながっている頂点を見つける( クエリ)
- 直接つながっている頂点が無ければ、②が単独で直接つながっているので が答え
- ①と直接つながっている頂点たちと②の距離を尋ねて、その最小値( とする)と個数を見る(最大 クエリ)
- なら、その頂点を経由するのが最短ルートなので が答え
- かつ、そのような頂点が 2 個以上あるなら、①と②は直接つながっている(①経由で距離 2 になるパターンしかない)ので が答え
- 以降、 かつ、そのような頂点が 1 個だったとする( と表現します)。ここまで、 クエリであることに注意。
今から考えるのは、「②は①と直接つながっているのか、そうでないのか?」です。 - ②と直接つながっている頂点を見つける。 と直接つながっていることはない(そうであれば になる)ので、それ以外の 個について尋ねる。ここまで クエリ。
- ここで、そのような頂点が無ければ、①と②は直接つながっている(かつ、②に子がいない)ことが分かるので が答え
- 先ほど求めた頂点から 1 つを適当に取る。その頂点と①、その頂点と との距離を尋ねて、①からの方が近いなら 、そうでないなら が答え(2 クエリ、合計 クエリで終了)
- これは、②が①の子になっているのか、 の子孫になっているのか調べています
状況整理が甘く、5. の判定をどうすれば良いのかで20分くらい悩みました。テスト方法もよく分からなかったので、書き上げて即投げしてめでたくAC。
D, E, F
見てないです。
久々のARCでしたが、青パフォですしいい感じの戦果でした。A や C をもう少し上手く切り抜けたかったですが、まぁ実力相応でしょう。状況整理もっと素早くできるようになりたいですね。