#P17771. 开关灯 II
开关灯 II
题目描述
旅途中,小 D 住进了一间装有环形灯带的房间。睡觉前,他发现遥控器出了故障:每次操作都会同时切换连续的几盏灯。小 D 想用尽量少的操作把所有灯关掉。
灯带上共有 盏灯,沿顺时针方向依次编号为 。其中,编号为 的灯的下一盏是编号为 的灯。
每次操作,小 D 可以任选一个编号 ,同时切换从 开始、沿顺时针方向连续的恰好 盏灯的状态,所选区间可以跨过圆环首尾。也就是说,编号为 的灯都会改变状态:亮灯变为灭灯,灭灯变为亮灯。不同操作可以选择相同的起点。
初始亮着的灯由 个区间描述。第 个区间为 ,表示编号满足 的灯 初始亮着,包含左端点,不包含右端点。其余灯初始均为灭灯。给出的区间按位置递增排列,彼此不重叠,但允许相邻区间首尾相接。
请你求出将所有灯变为灭灯所需的最少操作次数。如果无论如何都不能把所有灯关掉,输出 。
输入格式
从标准输入读入数据。
第一行包含一个正整数 ,表示测试数据组数。
对于每组测试数据:
- 第一行包含三个整数 ,分别表示灯的数量、每次操作切换的灯的数量,以及描述初始亮灯的区间数量。
- 接下来 行,第 行包含两个整数 ,表示区间 。
输出格式
输出到标准输出。
对于每组测试数据,输出一行一个整数,表示最少操作次数;如果无解,输出 。
5
6 2 2
0 1
2 5
5 2 2
0 1
2 4
4 3 2
0 1
2 3
6 2 1
0 6
7 3 2
1 3
3 4
3
-1
2
3
1
提示
样例 1 解释
- 第一组数据中,可以依次选择 为起点进行操作,将所有灯关掉。最少需要 次操作。
- 第二组数据中,初始有 盏亮灯。每次切换 盏灯,亮灯数量的奇偶性不会改变,因此无法把所有灯关掉。
- 第三组数据中,可以依次选择 为起点进行操作。第二次操作会切换编号为 的灯。
- 第四组数据中,所有灯初始均为亮灯。分别以 为起点操作即可。
- 第五组数据中,两个给定区间首尾相接,初始亮灯的编号为 。以 为起点操作一次即可。
该样例同时保存在题目附件中的 lights/lights1.in 与 lights/lights1.ans 中。
样例 2
见题目附件中的 lights/lights2.in 与 lights/lights2.ans。该样例满足特殊性质 B。
样例 3
见题目附件中的 lights/lights3.in 与 lights/lights3.ans。该样例满足特殊性质 C。
样例 4
见题目附件中的 lights/lights4.in 与 lights/lights4.ans。该样例满足全部数据的约束条件,不保证满足任何特殊性质。
数据范围与测试点
对于全部数据,保证:
- ;
- ,;
- ;
- ;
- 对于 ,有 ;
- 每个输入文件中,所有测试数据的 之和不超过 。
本题共有 个测试点,每个测试点 分,各测试点独立计分。详细数据范围见下表。
| 测试点编号 | 特殊性质 | 单点分值 | |||
|---|---|---|---|---|---|
| 无 | |||||
| A | |||||
| 无 | |||||
| B | |||||
| C | |||||
| 无 |
特殊性质 A:每个输入文件中,所有测试数据的 之和不超过 。
特殊性质 B:。
特殊性质 C:,即 是 的整数倍。