1 atcoder#ARC103B. [ABC111D] Robot Arms

[ABC111D] Robot Arms

题目描述

すぬけ君の工場では,次のような特徴を持つ ロボットアーム を導入することになりました:

  • ロボットアームは,m m 個の m+1 m+1 個の 関節 からなる.腕には 1 1 , 2 2 , ..., m m で,関節には 0 0 , 1 1 , ..., m m で番号が付けられている.腕 i i は関節 i1 i-1 と関節 i i をつなぐ.腕 i i の長さは di d_i である.
  • 各腕には,それぞれ独立に モード を指定することができる.モードは L, R, D, U のいずれかであり,腕のモードはその腕の向きを指定する.工場を座標平面とみなすと,関節 i i の座標 (xi, yi) (x_i,\ y_i) は次のように定まる:
    • (x0, y0) = (0, 0) (x_0,\ y_0)\ =\ (0,\ 0)
    • i i のモードが L のとき,(xi, yi) = (xi1  di, yi1) (x_i,\ y_i)\ =\ (x_{i-1}\ -\ d_{i},\ y_{i-1})
    • i i のモードが R のとき,(xi, yi) = (xi1 + di, yi1) (x_i,\ y_i)\ =\ (x_{i-1}\ +\ d_{i},\ y_{i-1})
    • i i のモードが D のとき,(xi, yi) = (xi1, yi1  di) (x_i,\ y_i)\ =\ (x_{i-1},\ y_{i-1}\ -\ d_{i})
    • i i のモードが U のとき,(xi, yi) = (xi1, yi1 + di) (x_i,\ y_i)\ =\ (x_{i-1},\ y_{i-1}\ +\ d_{i})

すぬけ君は,腕のモードをうまく指定することにより,N N 個の点 (X1, Y1), (X2, Y2), ..., (XN, YN) (X_1,\ Y_1),\ (X_2,\ Y_2),\ ...,\ (X_N,\ Y_N) のいずれにもロボットアームの関節 m m をちょうど一致させられるようなロボットアームを導入したいです. このようなことは可能でしょうか? 可能ならば,条件を満たすロボットアームおよび,各点 (Xj, Yj) (X_j,\ Y_j) にそのロボットアームの関節 m m を到達させるためのモードの指定方法を求めてください.

输入格式

入力は以下の形式で標準入力から与えられる.

N N X1 X_1 Y1 Y_1 X2 X_2 Y2 Y_2 : : XN X_N YN Y_N

输出格式

条件を満たすことが可能なら,次の形式で出力せよ.不可能な場合は -1 を出力せよ.

m m d1 d_1 d2 d_2 ... ... dm d_m w1 w_1 w2 w_2 : : wN w_N

m m および di d_i はロボットアームの情報を表す.それぞれの変数の意味は問題文を参照せよ. ここで,1  m  40 1\ \leq\ m\ \leq\ 40 , 1  di  1012 1\ \leq\ d_i\ \leq\ 10^{12} かつ m, di m,\ d_i はすべて整数でなければならない.

wj w_j m m 文字からなる文字列であり,点 (Xj, Yj) (X_j,\ Y_j) にロボットアームの関節 m m を到達させる方法を表す. wj w_j i i 文字目は L, R, D, U のいずれかの文字であり,腕 i i のモードを表す.

题目大意

给定 nn 组坐标。构造长度为 mm 的序列 {cn}\{c_n\}nn 组包含 LRUD 的路径,满足对于每一组坐标:

  • cic_i 表示第 ii 步「步长」。
  • 对于每个坐标,从 (0,0)(0,0) 开始走,共走 mm 步。第 ii 步可以让 (x,y)(x,y) 变成 (x±ci,y)(x±c_i,y)(x,y±ci)(x,y±c_i)
  • 走完 mm 次之后,恰好走到这组坐标。
  • 要求 m40,ci1012m\leq 40,c_i\leq 10^{12}

1n10001\leq n\leq 1000

3
-1 0
0 3
2 -1
2
1 2
RL
UU
DR
5
0 0
1 0
2 0
3 0
4 0
-1
2
1 1
1 1
2
1 1
RU
UR
3
-7 -3
7 3
-3 -7
5
3 1 4 1 5
LRDUL
RDULR
DULRD

提示

制約

  • 入力はすべて整数である
  • 1  N  1000 1\ \leq\ N\ \leq\ 1000
  • 109  Xi  109 -10^9\ \leq\ X_i\ \leq\ 10^9
  • 109  Yi  109 -10^9\ \leq\ Y_i\ \leq\ 10^9

部分点

  • 300 300 点分のテストケースでは,10  Xi  10 -10\ \leq\ X_i\ \leq\ 10 および 10  Yi  10 -10\ \leq\ Y_i\ \leq\ 10 が成り立つ.

Sample Explanation 1

それぞれの (Xj, Yj) (X_j,\ Y_j) にロボットアームの関節 m m を到達させる方法において,各関節の位置は次のようになります. - (X1, Y1) = (1, 0) (X_1,\ Y_1)\ =\ (-1,\ 0) に到達させる方法では,まず関節 0 0 の位置は (x0, y0) = (0, 0) (x_0,\ y_0)\ =\ (0,\ 0) です.腕 1 1 のモードが R なので,関節 1 1 の位置は (x1, y1) = (1, 0) (x_1,\ y_1)\ =\ (1,\ 0) です.腕 2 2 のモードが L なので,関節 m=2 m=2 の位置は (x2, y2) = (1, 0) (x_2,\ y_2)\ =\ (-1,\ 0) です. - (X2, Y2) = (0, 3) (X_2,\ Y_2)\ =\ (0,\ 3) に到達させる方法では,$ (x_0,\ y_0)\ =\ (0,\ 0),\ (x_1,\ y_1)\ =\ (0,\ 1),\ (x_2,\ y_2)\ =\ (0,\ 3) $ です. - (X3, Y3) = (2, 1) (X_3,\ Y_3)\ =\ (2,\ -1) に到達させる方法では,$ (x_0,\ y_0)\ =\ (0,\ 0),\ (x_1,\ y_1)\ =\ (0,\ -1),\ (x_2,\ y_2)\ =\ (2,\ -1) $ です.

Sample Explanation 3

(Xj, Yj) (X_j,\ Y_j) の中に同じ点が含まれることもあります.