# D - Gathering Children (opens new window)

# 概要

  • LRのみで構成された文字列SSが左から順にS|S|マスだけ書かれている
  • 各マスには1人の子供がいる
  • 以下の操作を1010010^100回行った時に, 各マスにいる子供の人数を求めよ
    • 子供は, いるマスがLなら左のマスに, Rなら右のマスに移動する

# 思考

  • 1010010^100回の操作」と書かれていたので, 最終状態が存在することがわかる
    • ここでは, 最終状態をオートマトンのループする部分とする
  • LRで移動するので, 偶奇で2つの状態が変化しそう
  • 偶奇で判断すれば良さそう!
  • 最終的に固まる場所は, R...RL...Lの時のRの右端とLの左端
  • 実装
  • 入力例3が通らない

ここで30分終了, 時間をあけて1からマクロなしで書き直す

  • 書き直しても入力例3が通らない
  • 各状態を出力してデバッグする
  • 最終的に固まる場所によって, 最終状態に入るまでに必要な操作回数が変わることに気づく
  • 実装に反映して提出
  • AC!

# 提出

# 気づいたこと

  • マクロなしの方が合っているかもしれない
    • 時間はかかるがコードが読みやすくなる
    • 綺麗に書こうとする(ホントか?)
  • debug用のマクロはあった方が良さそう
Last Updated: 9ヶ月前