1909: 兔子跳跃

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:6 解决:5

题目描述

兔子常常感到孤独,所以当他们决定出去走走,去见见他们的朋友,他们跳的很快。

 

Iris正走在一条无限长的直线道路上。这条道路上点的编号...,-3,-2,-1,0,1,2,3,...从西到东。Iris的家是在0点上,而她想要见的朋友在点1000000001。她是兔子当然只能通过移动跳跃前行,她有两个跳跃类型:小跳和大跳。当她在点x,通过一小跳,她可以移动到点(x + 2)或(x - 2)。通过一个大跳跃,她可以移动到点(x + largeJump)或点(x - largeJump)。

 

不幸的是,道路总是那么坑坑洼洼,洞的大小不一,有些还可能包含连续几个点,Iris不能跳到这些洞中。

 

Iris喜欢用小跳,因为这样更加的省力。请问到达1000000001所要使用的最少的大跳跃数量。如果不能达到这一点,输出-1。

 

注意,道路无限长,当然能跳到超过1000000001的点。

输入

有多组测试数据:
第一行,包含一个整数Num,表示测试数据的个数。(1<=Num<=10)
每组测试数据,
第一行一个整数N,表示共有N个洞。1<=N<=25.
接下来一行N*2个整数,每个洞的两个端点编号,所有端点都是严格递增顺序给出。[1 and 1,000,000,000]。

最后一个整数largeJump[3 and 1,000,000,000]。

输出

Num行,
到达目标所需最少大跳跃的次数。无法到达输出-1

样例输入 复制

5
1
1 2
3
1
1 2
4
1
2 3
3
4
2 17 21 36 40 55 59 74
19
12
187640193 187640493 187640738 187640845 564588641 564588679   
564588696 564588907 605671187 605671278 605671288 605671386   
755723729 755723774 755723880 755723920 795077469 795077625   
795077851 795078039 945654724 945654815 945655107 945655323
475

样例输出 复制

1
-1
3
5
9

提示

【说明】

第一组样例中

0 => 3 -> 5 -> 7 -> ... -> 999999999 -> 1000000001

0到3使用了一次大跳跃。

第二组样例中,她只能跳到偶数的位置,不可能到达目标。

第三组样例中,0 -> -2 => 1 => 4 => 7 -> 9 -> 11 -> ... -> 999999999 -> 1000000001