#P1718. River Crossing
River Crossing
描述
的市民热爱所有逻辑思维与身体技能同样重要的运动。其中一项运动是跨越河——最宽的河流。河上有根编号为到(从左到右)的柱子。市民必须从左岸出发,经过若干柱子,最终到达右岸。左岸位于柱子左侧一个单位的位置,右岸位于柱子右侧一个单位的位置。
在时间时,市民位于河的左岸,目标是尽快到达右岸。在任意时刻,每根柱子要么是“”状态(升起)要么是“”状态(降下),市民只能站在升起的柱子或河岸上。
每根柱子在时间时处于降下状态,随后会保持个时间单位升起、个时间单位降下,如此循环。每根柱子的和是独立定义的。例如,、的柱子在时间时降下,时间和时升起,时间、、时降下,依此类推。
在时间时,市民可以选择移动到当前位置(时间时的位置)左右根柱子范围内的任意可用柱子或河岸,也可以停留在当前位置(如果当前位置是可用柱子或河岸)。例如,从柱子出发,市民可以到达柱子、、、、、、、、、或左岸。
编写程序,计算市民首次到达右岸的时间(若可到达)。
输入
输入第一行包含数据块数量()。接下来的行包含个数据块,第一个数据块从输入文件的第二行开始,后续数据块紧接在前一个之后。
每个数据块的第一行包含整数(),表示柱子数量。接下来的行每行包含两个整数、(),第行()描述柱子的状态变化规律。
输出
对于第个数据块(),输出市民首次到达右岸的时间,若无法到达则输出“”。
输入数据1
2
10
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
10
1 1
1 1
1 1
1 1
2 1
1 1
1 1
1 1
1 1
1 1
输出数据1
NO
4
来源
CEOI 1997