【样例 1 解释】
该样例共包含五组测试数据。
对于第一组测试数据,序列 与序列 相同,因此无需施展任何法术。
对于第二组测试数据,施展一次第 种法术后,删除了序列 最右侧的 和 ,并在最左侧插入 ,得到序列 。
对于第三组测试数据,
- 施展一次第 种法术后,删除了序列 最左侧的 和 ,并在最右侧插入 ,得到序列 ;
- 再次施展一次第 种法术后,删除了最左侧的 和 ,并在最右侧插入 ,得到序列 。
对于第四组测试数据,可以证明,仅施展这两种法术无法将序列 变成序列 。
【样例 2】
见选手目录下的 night/night2.in 与 night/night2.ans。
该样例满足测试点 的约束条件。
【样例 3】
见选手目录下的 night/night3.in 与 night/night3.ans。
该样例满足测试点 的约束条件。
【样例 4】
见选手目录下的 night/night4.in 与 night/night4.ans。
该样例满足测试点 的约束条件。
【样例 5】
见选手目录下的 night/night5.in 与 night/night5.ans。
该样例满足测试点 的约束条件。
【数据范围】
对于所有测试数据,均有:
- ;
- ;
- 对于所有 ,均有 ;
- 对于所有 ,均有 。
::cute-table{tuack}
| 测试点编号 |
|
|
|
特殊性质 |
|
|
|
无 |
|
|
|
|
^ |
|
^ |
|
^ |
|
^ |
A |
|
|
B |
|
|
|
^ |
|
|
C |
|
|
|
^ |
|
|
D |
|
|
|
^ |
|
|
无 |
|
|
|
^ |
定义序列 是奇异的,当且仅当 ,且 ,且对于所有 ,均有 。
定义序列 的循环移位如下:对于正整数 (),序列 是序列 的一个循环移位。
- 特殊性质 A:。
- 特殊性质 B:序列 都是奇异的。
- 特殊性质 C:序列 与序列 各自存在一个循环移位是奇异的。
- 特殊性质 D:。
【评分方式】
本题包含两个小问。对于每个测试点:
- 小问 1:对该测试点中每组测试数据,正确判断可行性,即可获得该测试点 的分数;
- 小问 2:在此基础上,若对每组答案为 Yes 的测试数据还能正确给出一组合法的施法方案,即可获得该测试点另外 的分数。
注意:对于答案为 Yes 的测试数据,无论选手是否尝试给出正确的施法方案,都需要在第二行输出 个 中的正整数,以满足输出格式。
【提示】
本题目录下提供了一份 checker.cpp 用于检验施法方案的可行性。注意:提供的 checker.cpp 只会检验答案为 Yes 的测试数据中施法方案的正确性,而不会检查可行性判断的正确性。
选手可以在本题目录下使用如下命令编译得到可执行程序:
g++ checker.cpp -o checker -std=gnu++14 -O2 -static
编译得到可执行程序后,选手可以在本题目目录下使用如下命令进行测试:
./checker <input_file> <output_file>
其中 <input_file> 与 <output_file> 分别表示输入文件与输出文件的路径。
注意:选手提供的输入文件需满足题目给定的输入格式与数据范围,输出文件需满足给定的输出格式,否则不保证检验结果的正确性,并可能发生无法预料的错误。