#P11326. 【MX-S7-T4】「SMOI-R2」XA-Game
【MX-S7-T4】「SMOI-R2」XA-Game
题目背景
原题链接:https://oier.team/problems/S7D。
题目描述
Alice 和 Bob 在玩一个游戏。
初始地,有一个长度为 的 01 序列,位置编号为 。双方轮流操作,Alice 先操作。
Alice 的操作是任意选择序列中位置相邻的两个数,将它们合并为它们的异或值(即 C++ 中的 ^
操作)。
Bob 的操作是任意选择序列中位置相邻的两个数,将它们合并为它们的与值(即 C++ 中的 &
操作)。
游戏将持续进行,直至序列中仅剩一个数。如果最后剩下的数是 ,Alice 获胜;否则,Bob 获胜。
在游戏开始前,Bob 施展了 次魔法调整初始序列,第 次魔法将第 个位置的数改为 。
Alice 想知道,如果双方都使用最优策略,有多少种可能的初始序列(在 Bob 施展魔法之前)能够让她赢得游戏。由于答案可能非常大,你需要将结果对质数 取模。
输入格式
本题有多组测试数据。
第一行,一个正整数 ,表示数据组数。接下来,对于每组数据:
- 第一行,两个非负整数 ,分别表示 01 序列的长度和 Bob 的魔法操作次数。
- 接下来 行,第 行两个非负整数 ,表示第 次魔法操作将第 个位置的数改为 。保证 严格递增给出,即 。
输出格式
对于每组测试数据:
- 仅一行,一个整数,表示答案对 取模后的结果。
5
3 0
5 2
2 0
4 1
6 3
1 0
2 1
4 1
1234 4
52 1
110 1
520 0
999 1
114514 0
3
12
32
27109943
596672839
提示
【样例解释 #1】
第一组数据中,可以让 Alice 赢的序列有 、、 共 种。
第二组数据中,可以让 Alice 赢的序列有 、、、、、、、、、、、 共 种。
其中序列 ,在 Bob 实施完魔法后变成了 。Alice 第一次操作可以合并第四个数和第五个数,序列变成 ,可以发现 Bob 无论怎么操作 Alice 都会赢。
【样例 #2】
见附件中的 game/game2.in
与 game/game2.ans
。
该组样例满足测试点 的约束条件。
【样例 #3】
见附件中的 game/game3.in
与 game/game3.ans
。
该组样例满足测试点 的约束条件。
【样例 #4】
见附件中的 game/game4.in
与 game/game4.ans
。
该组样例满足测试点 的约束条件。
【样例 #5】
见附件中的 game/game5.in
与 game/game5.ans
。
该组样例满足测试点 的约束条件。
【数据范围】
对于所有测试数据,保证:,,,,,,。
测试点编号 | 特殊性质 | |||
---|---|---|---|---|
无 | ||||
A | ||||
B | ||||
C | ||||
无 | ||||
- 特殊性质 A:。
- 特殊性质 B:,且 。
- 特殊性质 C:,且 中没有相邻的两个 ,即 。