AtCoder Beginner Contest 243 D問題 Moves on Binary Tree
問題
提出解答
問題の概要
頂点からなる完全二分木があり, 個の頂点にはそれぞれ と名付けられている.
ここで, この二分木は以下のようにして構成されている.
- に対して, 頂点 の左の子, 右の子はそれぞれ である.
最初, 頂点 がマークされており, このマークは 回目の移動では
- ならば今いる頂点の親に移動する.
- ならば今いる頂点の左の子に移動する.
- ならば今いる頂点の右の子に移動する.
回目の移動後にマークされている頂点の番号 を答えよ. ただし, になるような入力のみ与えられる.
制約
- は からなる長さ の文字列.
- は可能な移動を表す.
- になる.
解法
番号を2進数で表すと各移動を頂点番号には以下のような関係が生まれる.
- 上に移動することは, 番号の2進表記の末尾を削除することに対応する.
- 左の子に移動することは, 番号の2進表記の末尾に を加えることに対応する.
- 右の子に移動することは, 番号の2進表記の末尾に を加えることに対応する.
2進表記について, Queue で記録することにより, を で求める事ができる.