問題一覧 > 通常問題

No.2657 Falling Block Game

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

問題文

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

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

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

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

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

制約

  • 3H1053 \le H \le 10^5
  • 1W1051 \le W \le 10^5
  • HW5×105HW \le 5\times 10^5
  • S1,j,SH,j(1jW)S_{1,j},S_{H,j} (1 \le j \le W)は全て.
  • 時刻 00 にボールがどのマスに出現しても、ゲームクリアが可能である
  • H,WH,W は整数
  • Si,jS_{i,j}.#

入力

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

出力

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

サンプル

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

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

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

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

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

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