LoginSignup
0
0

More than 1 year has passed since last update.

ABC278回答メモ

Last updated at Posted at 2022-11-20

0.はじめに
 今回はD問題まではそこそこの難易度で
 久々に4問正解達成。
 レートも+38でした。
 40分残してE問題にたどり着いたけど、ちょっと難しかったです・・。

1.A - Shift
 サーッと問題読んで、A問題だから素直に
 ループしてもいいとは思いつつ
 若干手を抜きました。
 
 N個の0数列の先頭から、
 インプットしたA数列のK個目から最後までを入れて
 最後にアウトプットする。
 といった感じで実装しました。

 https://atcoder.jp/contests/abc278/submissions/36605710

2.B - Misjudge the Time
 どう考えても時計のデザインが悪いだろ・・・。と思いつつ
 以下のように実装。
 1) 見間違えやすい時刻(以下ダメ時間)になるまで以下をループ
  1-1)現在時刻、時間Hと分MをA,B,C,Dに分解してダメ時間判定
   1-1-2)A&Cが時として見られるか判定
    -Aが1以下ならOK
    -Aが2の時はCが3以下ならOK
   1-1-3)B&Dが分として見られるか判定
    -Bが5以下ならOK
   1-1-4)1-2と1-3がOKの時、ダメ時間と判定してループを抜ける
  1-2)現在時刻がダメ時間でない時、1分進める
   1-2-1)Mが59の時
    1-2-1-1)Hが23の時
     -Hに0をセット
     -Mに0をセット
    1-2-1-2)Hが23以外
     -Hに1加算
     -Mに0をセット
   1-2-2)Mが59以外の時
     -Hに1加算
  2)ループを抜けたら、現在時刻を表示

 最初、なぜか、1-1-3でBが6以下ならOKとしてしまいNGでしたが
 すぐに気づけて修正してACでした。
 なかなか面白い問題でした。

 https://atcoder.jp/contests/abc278/submissions/36617488

3.C - FF
 最近のC問題にしてはやさしめの問題だなと思いつつ取り掛かる。
 【考え方】
  フォロー用の辞書dictを作成し
  フォロー情報がはいったら(T=1)、A*(1010)+Bをキーに
  dictへ値1で登録(or更新)
  フォロー情報が消えたら(T=2)、A*(10
10)+Bをキーに
  dictを検索し、値0に更新
  フォローチェック(T=3)の時は、A*(1010)+Bと
  B*(10
10)+Aをキーにdictを検索し、
  どちらも値が1だったら”Yes”を
  それ以外なら”No”を表示

 単純に実装しましたが、特にTLEにもならず一発合格でした。

 https://atcoder.jp/contests/abc278/submissions/36623769

4.D - All Assign Point Add
 一見考え方自体は簡単そうだったので、TLE回避問題と思いつつ
 まずは素直に実装。
 【考え方1】
  入力数列をリストAに保存
  クエリ1の時
   リストAをxで初期化
  クエリ2の時
   リストA[i]にxを加算
  クエリ3の時
   リストA[i]を出力
 上記実装で7/15のTLE。
 まぁ、リストAの初期化が時間を食っているんだろうなと
 新たな考え方を導入。
 【考え方2】
  クリア時変数QL(初期値-1)を用意
  ついでに加算用辞書dictを用意
  入力数列をリストAに保存
  クエリ1の時
   QLにxをセット
   dictを初期化
  クエリ2の時
   dict[i]にxをセットor(すでにあれば加算)
  クエリ3の時
   QLが-1の時
    リストA[i]+dictiを出力
   QLが-1以外の時
    QL+dictiを出力
 上記回収でACゲットでした。

 https://atcoder.jp/contests/abc278/submissions/36631666

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