問題一覧 > 通常問題

No.2657 Falling Block Game

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 49
作問者 : hamamuhamamu / テスター : 👑 AngrySadEightAngrySadEight てんぷらてんぷら
1 ProblemId : 10610 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-02-28 00:41:32

問題文

画面上で上から下へ落ちていくボールを左右に操作し、 障害物をよけて一番下を目指すコンピューターゲームがあります。

ゲーム画面は高さ $H$ マス、横 $W$ マスのグリッドで表されます。
上から $i$ 行目、左から $j$ 列目のマスを $(i,j)$ と表します。

ボールは時刻 $0$ に一番上の行のいずれかのマスにランダムに出現し、 $1$ 秒ごとに一つ下のマスに瞬間的に移動します。
つまり、 $t=1,2, \cdots ,H-1$ において、 時刻 $t$ に $(t,j)$ から $(t+1,j)$ に瞬間的に移動します。
また、 $(i,j)$ にボールがあるときにプレーヤーが左ボタンを押すと $(i,j-1)$ に、 右ボタンを押すと $(i,j+1)$ に瞬間的に移動します。
但し下への移動と左右への移動は同時にはできません(つまり斜め移動はできません)。 またグリッドの外には移動できません。

マス $(i,j)$ の障害物の有無は文字 $S_{i,j}$ で表されます。
$S_{i,j}=$#のときは障害物があり、.のときは障害物がありません。
ボールが障害物のあるマスに移動するとゲームオーバーです。
ゲームオーバーにならずに一番下の行のいずれかのマスに移動するとゲームクリアです。
一番上の行と一番下の行には障害物がありません。
また、ゲームクリア不可能な障害物配置になることはありません。

hamamuさんは腱鞘炎なので、 一秒間にボタンを押す回数の最大値 $P$ を最小化してゲームクリアしたいです。
形式的には、 $t=1,2, \cdots ,H-1$ において時刻 $t-1$ から $t$ の間にボタンを押す回数を $f(t)$ とし、 $$P=\max_{t=1,2,\cdots,H-1} f(t)$$ として、 $P$ を最小化したいです。
$k=1,2, \cdots ,W$ に対し、ボールがマス $(1,k)$ に出現したときの $P$ の最小値を求めてください。

制約

  • $3 \le H \le 10^5$
  • $1 \le W \le 10^5$
  • $HW \le 5\times 10^5$
  • $S_{1,j},S_{H,j} (1 \le j \le W)$は全て.
  • 時刻 $0$ にボールがどのマスに出現しても、ゲームクリアが可能である
  • $H,W$ は整数
  • $S_{i,j}$ は.#

入力

以下の形式で標準入力から与えられます。
$H\ W$
$S_{1,1}S_{1,2} \cdots S_{1,W}$
$S_{2,1}S_{2,2} \cdots S_{2,W}$
$\cdots$
$S_{H,1}S_{H,2} \cdots S_{H,W}$

出力

$W$ 行出力してください。
$k$ 行目にボールがマス $(1,k)$ に出現したときの $P$ の最小値を出力してください。
最後に改行してください。

サンプル

サンプル1
入力
3 3
...
##.
...
出力
2
1
0

$k=1$ のとき、時刻 $0$ にボールがマス $(1,1)$ に出現します。
時刻 $0$ から $1$ の間に右ボタンを $2$ 回押すと、マス $(1,3)$ に移動します。
時刻 $1$ にマス $(2,3)$ に移動します。
時刻 $2$ にマス $(3,3)$ に移動し、一番下の行に到達したのでゲームクリアになります。
このとき、 $f(1)=2,f(2)=0$ であり、 $P=2$ です。
$P \lt 2$ でゲームクリアする方法は存在しないため、答は $2$ です。
同様に、 $k=2,3$ のときの $P$ の最小値は $1,0$ であるため、それらを出力します。

サンプル2
入力
4 3
...
...
##.
...
出力
1
1
0

$k=1$ のときのみ説明します。
時刻 $0$ にボールがマス $(1,1)$ に出現します。
時刻 $0$ から $1$ の間に右ボタンを $1$ 回押すと、マス $(1,2)$ に移動します。
時刻 $1$ にマス $(2,2)$ に移動します。
時刻 $1$ から $2$ の間に右ボタンを $1$ 回押すと、マス $(2,3)$ に移動します。
時刻 $2$ にマス $(3,3)$ に移動します。
時刻 $3$ にマス $(4,3)$ に移動し、一番下の行に到達したのでゲームクリアになります。
このとき、 $f(1)=1,f(2)=1,f(3)=0$ であり、 $P=1$ です。
$P \lt 1$ でゲームクリアする方法は存在しないため、答は $1$ です。

サンプル3
入力
5 8
........
.######.
........
##...###
........
出力
2
2
2
3
3
3
3
3

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。