AtCoder Beginner Contest 274 D問題 Robot Arms 2
問題
提出解答
問題の概要
次の条件を全て満たすような座標平面上の点の列 は存在するか? *1
- 間の距離は である.
- 線分 と線分 の成す角は である.
制約
解法
線分 と線分 の成す角は であり, であるから, 線分 について次のことがわかる.
- が奇数ならば, 線分 は長さ で 軸に平行である.
- が偶数ならば, 線分 は長さ で 軸に平行である.
また, で, 今述べた条件を満たすような点列については元で要求されている条件のうち, 以外の条件を全て満たす.
このことから, 次の問題に帰着される.
次を満たすような は存在するか?
上の問題についても より, を移項させることによって, 次のような問題を2回解けば良い.
次を満たすような は存在するか?
動的計画法で解くことにする. を次のようにして定義する.
- となる が存在すれば , 存在しなければ .
ベースケースは のときで,
である.
更新式についても をどちらに割り当てるかを考えることによって,
である.
これにより, が結果になる.
このとき, となり得る の個数は高々 個である. よって, を として, の範囲に絞ればよい.
この工夫によって, 計算量 で判定できる.
この判定法を2回繰り返すことによって, 元問題も として, で判定できる.
*1:原題に対して, 添字が1ずつ小さくなっている