区間を整理する考え方が楽しかった。
問題概要
下図のように 組の「黒い区間」と「赤い区間」がある。赤い区間は黒い区間に完全に包含されている。
この区間上でコマを動かしていく。コマが 番目の黒い区間の内部にあるとき、 番目の赤い区間の内部の任意の点にコマを移動できる。
個のクエリが与えられる。各クエリでは、コマの初期位置 が与えられる。上記のルールに則ってコマを動かすとき、コマの位置の最大値を答えよ。
制約
- クエリの個数はテストケース全体を通して 以下である
考えたこと
色々単純化してよいことがわかった。
番目の黒い区間が 、赤い区間が とするとき、次のように単純化してよい。
- コマの座標 が ならば、 を に移動できると考えてよい (右端が存在しないとしても変わらない)
- コマを移動させるとき、赤い区間の右端以外に動かす場合は考えなくてよい
これだけ単純化すれば、次の DP ができる。なお、各区間を黒い区間の左端の順にソートしておくこととする。
dp[i]
← 番目の黒い区間の左端から出発して到達できる地点の最大値