0
0

0.はじめに
 アットコーダー初参加は、去年のユニークビジョンだったなぁと思いながら参戦。
 Cまではそこそこのペースで解けましたが、Dでブレーキ。
 結局Cまでクリアで終わりました。
 問題難易度は楽しく解けるちょうどよい感じでした。
 レートは+10と微増しました。

1.A - Weak Beats
 ビットを使って綺麗に解けそうな気もしつつ
 回答の早さ優先で単純な実装

 Sを読み込んだら、先頭からチェックしていき
 偶数番の時(pythonのカウンター的には奇数の時)
 0でなかったらフラグを立てる
 最後までチェックして、フラグが立っていたらNo
 立っていなかったらYesを出力して終了

 https://atcoder.jp/contests/abc323/submissions/46282719

2.B - Round-Robin Tournament
 ペアを格納するリストを用意
 勝敗表を読んでいき
 (勝利数、プレイヤー番号*-1)を
 リストに格納
 リストを降順にソート
 リストを順番に読んでいき回答用リストに
 プレイヤー番号*-1を格納し
 最後に回答用リストを表示して終了

 https://atcoder.jp/contests/abc323/submissions/46293606

3.C - World Tour Finals
 なかなかしっくりこないややこしい条件があるなと思いつつも
 まぁ素直に実装すれば生けるかと取り掛かりました。
 結果的に制約的にTLEすることなく行けました。
 
 考え方
  プレイヤーごとの得点状況を読み込む際に以下の下準備をしておく
   ・各プレイヤーの現在の得点をリストSUMに格納
   ・各プレイヤーの現在正解していない問題の得点を
    リストに格納し、降順にソートしたのち
    2次元リストmoreに格納
   ・プレイヤー全員の中で最高の得点をwinに格納
  リストSUMをindex iで順に読み込んでいき回答を出力
   ・win=SUM[i]の時0を出力
   ・SUM[i]に、more[i]のリストを先頭から足していき
    win以上になる個数をカウントし表示

 https://atcoder.jp/contests/abc323/submissions/46315812

4.D - Merge Slimes
 1時間以上時間が残っていましたが、結局解けませんでした。
 コンテスト後解説や、他の方の解答を見てなんとかACにこぎつけました。

 最初の考え方
  ・キーをS_スライムの大きさ、値をCスライムの匹数で
   辞書に登録
  ・辞書Dのキーsを昇順に読み込んで
   匹数cが奇数なら変数ansに+1
   引数が2以上なら、キー[s*c]にc//2を加算
  ・↑を繰り返していき辞書Dが空になったら終了
 問題点
  ・keys()で呼び出しながら、その辞書に新たなキーを登録できない
  →キーを別項目で切り出して並べかえて参照して・・・等
   いろいろ工夫したが、TLEとなる
   →コンテスト中はTLE12止まりでした。
 解決策
  ・解説等を見て優先度キュー等を使っても
   TLEが外せ無かったのですが、他の方の解答を見て
   keysをコピーして使うことで、読み込みながら入力
   できることが分かり採用
   →それでもTLEが外れず、さらによく考えると、
    keysでキーだけ取り出すのではなく、itemsで値も取り出せば
    時間早まるなと気づき、(参考にした方のソースを見て気づきましたが)
    ほぼ、丸パクリでACとなりました。

 https://atcoder.jp/contests/abc323/submissions/46358162

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0