#1490. 环湖集章 (stamp)
环湖集章 (stamp)
本题需要文件读写
文件 IO 为:输入文件
stamp.in,输出文件stamp.out。请使用上述文件名读入和输出。
题目描述
公园正在举行环湖集章活动。湖岸是一条周长为 米的环形步道,步道上设有 个集章点,依次编号为 。从活动起点沿顺时针方向行走 米,就会到达第 个集章点。输入按顺时针顺序给出各点的位置,即 。
活动在时刻 开始,小林此时位于起点。他每秒行走 米,可以沿顺时针或逆时针方向行走,也可以在途中改变方向,改变方向的次数不限。
第 个集章点只在活动开始后的前 秒内提供印章。如果小林到达该点的时刻不晚于 ,就可以取得该点的印章;恰好在时刻 到达也可以。盖章不花费时间。每个集章点提供的印章各不相同,同一点的印章至多计入一次。
已经停止提供印章的集章点仍然可以经过。小林不需要回到起点,也没有必须经过所有集章点的要求。请问他最多能取得多少枚不同的印章?
输入格式
第一行包含一个整数 ,表示相互独立的活动组数。
接下来依次给出 组数据,每组格式如下:
- 第一行包含两个整数 ,分别表示集章点的数量和步道的周长。
- 第二行包含 个整数 ,表示各集章点的位置。
- 第三行包含 个整数 ,表示各集章点停止提供印章的时刻。
输出格式
输出 行,每行一个整数,依次表示对应一组活动中小林最多能取得的不同印章数量。每组都重新从该组的起点、时刻 出发,前一组的行走与印章不会影响后一组。
样例输入 1
1
6 25
3 4 7 17 21 23
11 7 17 10 8 10
样例输出 1
4
说明
样例解释
小林可以按以下方式行走:
- 从起点逆时针行走 米,时刻 到达第 个集章点,取得印章。
- 继续逆时针行走 米,时刻 到达第 个集章点,取得印章。
- 改为顺时针行走 米,时刻 到达第 个集章点,恰好赶上截止时刻,取得印章。
- 继续顺时针行走 米,时刻 到达第 个集章点。此时该点已经停止提供印章,但仍可经过。
- 再顺时针行走 米,时刻 到达第 个集章点,取得印章。
这样共取得 枚不同的印章。不存在取得 枚或更多不同印章的行走方案,因此答案为 。
其它样例说明
- 样例 2:见选手目录下的
stamp/stamp2.in与stamp/stamp2.ans。该样例满足测试点 的约束。 - 样例 3:见选手目录下的
stamp/stamp3.in与stamp/stamp3.ans。该样例满足测试点 的约束。 - 样例 4:见选手目录下的
stamp/stamp4.in与stamp/stamp4.ans。该样例满足测试点 的约束。 - 样例 5:见选手目录下的
stamp/stamp5.in与stamp/stamp5.ans。该样例满足完整数据范围。 - 样例 6:见选手目录下的
stamp/stamp6.in与stamp/stamp6.ans。该样例满足完整数据范围。 - 样例 7:见选手目录下的
stamp/stamp7.in与stamp/stamp7.ans。该样例满足测试点 的约束。
数据范围
对于所有测试数据,均有 ,同一输入文件内各组 之和 。每组数据均满足:
- ,。
- ,且 。
- 。
- 所有输入均为整数。
各测试点的附加约束如下表所示:
| 测试点编号 | 每组数据的额外约束 |
|---|---|
| ,,所有 | |
| ,所有 | |
| 无 |