[ABC221G] Jumping sequence
题意翻译
有一个无限大的平面直角坐标系,初始时你在 $(0,0)$ 处。给你一个长度为 $n$ 的序列 $d$,你可以移动 $n$ 步,每一步可以选择:
- 向上移动 $d_i$ 距离,从 $(x,y)$ 到 $(x,y+d_i)$
- 向下移动 $d_i$ 距离,从 $(x,y)$ 到 $(x,y-d_i)$
- 向右移动 $d_i$ 距离,从 $(x,y)$ 到 $(x+d_i,y)$
- 向左移动 $d_i$ 距离,从 $(x,y)$ 到 $(x-d_i,y)$
你想在 $n$ 步结束后位于 $(A,B)$ 位置,问是否存在这样的方案,如果存在需输出任意一种方案。
题目描述
[problemUrl]: https://atcoder.jp/contests/abc221/tasks/abc221_g
無限に広がる $ 2 $ 次元の座標平面を考えます。 高橋君は最初 $ (0,0) $ に立っており、今から上下左右いずれかの方向を選んでジャンプすることを $ N $ 回行います。 それぞれのジャンプで移動する距離は定まっており、具体的には $ i $ 回目のジャンプでは距離 $ D_i $ を移動します。 $ N $ 回のジャンプの後で、ちょうど位置 $ (A,B) $ にいるようにすることは可能か判定し、 可能ならばそのような移動方法を $ 1 $ つ示してください。
ただし、現在の位置が $ (X,Y) $ のときに、それぞれの方向を選んで距離 $ D $ のジャンプをしたときの着地地点はそれぞれ以下の通りです。
- 上方向 : $ (X,Y)\ \to\ (X,Y+D) $
- 下方向 : $ (X,Y)\ \to\ (X,Y-D) $
- 左方向 : $ (X,Y)\ \to\ (X-D,Y) $
- 右方向 : $ (X,Y)\ \to\ (X+D,Y) $
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ N $ $ A $ $ B $ $ D_1 $ $ D_2 $ $ \ldots $ $ D_N $
输出格式
条件をみたす移動方法が存在するならば `Yes` 、そうでないならば `No` を $ 1 $ 行目に出力せよ。
`Yes` の場合は $ 2 $ 行目に条件をみたす移動方法を、`U` , `D` , `L` , `R` からなる長さ $ N $ の文字列 $ S $ として出力せよ。
ただし、$ S $ の $ i $ 文字目が
- `U` のとき、 $ i $ 回目のジャンプでは上方向に移動する
- `D` のとき、 $ i $ 回目のジャンプでは下方向に移動する
- `L` のとき、 $ i $ 回目のジャンプでは左方向に移動する
- `R` のとき、 $ i $ 回目のジャンプでは右方向に移動する
ことを指す。
输入输出样例
输入样例 #1
3 2 -2
1 2 3
输出样例 #1
Yes
LDR
输入样例 #2
2 1 0
1 6
输出样例 #2
No
输入样例 #3
5 6 7
1 3 5 7 9
输出样例 #3
Yes
LRLUR
说明
### 制約
- $ 1\ \leq\ N\ \leq\ 2000 $
- $ \lvert\ A\rvert,\ \lvert\ B\rvert\ \leq\ 3.6\times\ 10^6 $
- $ 1\ \leq\ D_i\ \leq\ 1800 $
- 入力は全て整数である。
### Sample Explanation 1
$ 1 $ 回目のジャンプで左方向に、$ 2 $ 回目のジャンプで下方向に、$ 3 $ 回目のジャンプで右方向にジャンプすると、 $ (0,0)\to(-1,0)\to(-1,-2)\to(2,-2) $ と高橋君は動き、 最終的に $ (2,-2) $ に到達しているためこれは条件をみたしています。
### Sample Explanation 2
$ 2 $ 回のジャンプの後でちょうど $ (1,0) $ にいるようにすることはできません。