イノたまごラボ・あのぶる の「こんなの作ったよ!」

「イノたまごラボ」はひとり同人サークルのようなものです。今のところ同人誌は作っていませんが、ソフトウェアからイベントまで、心惹かれたものを細々と。

ABCリアタイチャレンジ・ABC323

  • やった回: ABC323
  • 成績: AB2完😇 / 0ペナ(+未AC4ペナ) / 8:42(ペナ込み)
  • パフォーマンス: 425

いやーこれはひどい。ひどすぎる。
今回のC問題くらいの難易度でドハマりするときはだいたいしょうもないミスに気付いていないというのは業務含めいつもの通りなんですが、なんというかもう言葉にできない。 途中Cを粘るかDのパフォーマンスチューニングを頑張るかで悩んでたんですがどっち取っても同じだったような気はする。

また先週増えた分と±0です。悲しすぎる。

A問題: ABC323-A Weak Beats

atcoder.jp

文字分割してeach_with_indexで配列を回していって偶数番目(0-indexなのでコード上は奇数番目)の文字のみ評価していく。

B問題: ABC323-B Round-Robin Tournament

atcoder.jp

勝利数を数え上げてハッシュに積んでいって多い方から並べ、最後にまとめて出力する。

C問題: ABC323-C World Tour Finals

(upsolveコード) atcoder.jp

現在の各プレイヤーのスコアと最高点を求めておいて、自分が最高点じゃなければ最高点を超えるのに何問解く必要があるかをシミュレーションしていく。ボーナスポイントの関係で同率1位はあり得ないので考慮しなくてOK。 これは未ACの問題をスコアが高い方から貪欲でOK、なんだけどぜんっぜんWAが取れず、何がダメなのかが全く分からないままコンテスト終了。泣きそう。

終了後ほかの人のACコードを読んでも全く分からず、デバッグ出力をあちこちに仕込んで気付いた敗因はまさかの貪欲するためのポイントソート漏れ。つらすぎ。

D問題: ABC323-D Merge Slimes

(upsolveコード) atcoder.jp

とりあえず存在しているスライムを小さい方から順にくっつけていくシミュレーションをするしかなさそう、ということで進めてた。入力例3が重たくてPriorityQueueまで持ち出したのにTLEを出し、なんとな~く最後まで処理してしまう方がよいのかな、それで速度改善するんだろうかと逡巡してコンテスト中はそのまま撤退。

終わってからRubyのfirst ACの人のコードを読んだところ大変読みやすくありがたかったです。
キーを走査しているHashをそのまま更新かけるというちょっとリスキーに見えることをしているのだけど、今回はループ内のwhileで同じ2x倍グループの処理を全部片づけていて、最初のキーの要素を走査しきれば全部チェックできたことが保証されるので一旦変数に取った方が見通しよいかも。

ということで今週も対ありでした。