Kazun の競プロ記録

競技プログラミングに関する様々な話題を執筆します.

AtCoder Beginner Contest 265 E問題 Warp

問題

atcoder.jp

提出解答

atcoder.jp

問題の概要

座標平面の原点にコマがある. このコマに対して, 以下の3種類の操作から1つを選び, 実行することを  N 回繰り返す.

  • コマが  (x,y) にいるとしたとき,  (x+A,y+B) に移動させる.
  • コマが  (x,y) にいるとしたとき,  (x+C,y+D) に移動させる.
  • コマが  (x,y) にいるとしたとき,  (x+E,y+F) に移動させる.

ただし, 移動後にコマが  (X_1, Y_1), \dots, (X_M, Y_M) のどれかに一致するような移動はできない.

 N 回の移動経路は何通りか?

制約

  •  1 \leq N \leq 300
  •  0 \leq M \leq 10^5
  •  -10^9 \leq A,B,C,D,E,F \leq 10^9
  •  (A,B), (C,D), (E,F) は互いに異なる.
  •  (X_j, Y_j) \neq (0,0)
  •  j \neq k \Rightarrow (X_j, Y_j) \neq (X_k, Y_k)

解法

説明のため, 3種類の移動を上から順に移動1, 移動2, 移動3ということにする. また,  v_1=(A,B), v_2=(C,D), v_3=(E,F) とする.

動的計画法で求めることにする.

 n=0,1,2, \dots, N 及び  p,q,r=0,1, \dots, n に対して,  {\rm DP}[n,p,q,r]

  • 合計  n 回の移動のうち, 移動1を  p 回, 移動2を  q 回, 移動3を  r 回するような移動における移動経路の場合の数.

このとき,  p+q+r=n という条件が働くことから,  r=n-p-q である. よって, 動的計画法の次元を1減らすことができる. 以降では記号のら濫用にはなるが  {\rm DP}[n,p,q] で同様の意味を表すとする.

ベース条件は  n=0 のときで  {\rm DP}[0,0,0]=1 である.

 n \geq 1 のとき, 遷移式は  0 \leq p+q \leq n-1 のとき,  r:=(n-1)-(p+q) として, 移動の方法による場合分けを行う.

  •  (p+1) v_1+q v_2+r v_3 \not \in S ならば  {\rm DP}[p+1, q]  {\rm DP}[p,q ] を加算する.
  •  p v_1+(q+1) v_2+r v_3 \not \in S ならば  {\rm DP}[p, q+1]  {\rm DP}[p,q ] を加算する.
  •  p v_1+q v_2+(r+1) v_3 \not \in S ならば  {\rm DP}[p, q]  {\rm DP}[p,q ] を加算する.

この動的計画法により, 最終解答は

 \displaystyle \sum_{\substack{p,q \geq 0 \\ 0 \leq p+q \leq N}} {\rm DP}[p,q ]

である.

これにより, 時間計算量  O(N^3) 時間で計算できる.