#CF2066D1. 青年飞机制造者俱乐部(简单版本)
青年飞机制造者俱乐部(简单版本)
D1. 青年飞机制造者俱乐部(简单版本)
每个测试点的时间限制: 秒
每个测试点的内存限制: 兆字节
这是该问题的简单版本。两个版本的区别在于,在这个版本中,所有的 。只有解决了所有版本的问题,你才能进行 Hack。
有一栋 层的建筑,楼层从下到上编号为 到 。每层恰好住着一个人。
今天所有居民有一个非常重要的目标:总共要发射至少 架纸飞机。居民们会轮流发射飞机。当第 层的居民发射一架飞机时,从第 层到第 层的所有居民都能看到它飞向地面。
如果从第 层居民的角度来看,已经有至少 架飞机被发射,那么他们自己就不会再发射任何飞机。此外,到一天结束时,从楼里每个居民的角度来看,至少已经有 架飞机被发射,并且总共发射了 架飞机。
你仔细监视了这次快闪活动,并记录了每架飞机是由哪一层的居民发射的。不幸的是,某些飞机具体由谁发射的信息丢失了。请找出填补这些空缺的方案数,使得记录是可信的。由于答案可能很大,请输出它对 取模的结果。
在这个版本的题目中,所有信息都丢失了,整个数组由空缺组成。
也有可能你在记录中犯了错误,导致无法恢复空缺。在这种情况下,答案被认为是 。
输入
每个测试包含多个测试用例。第一行包含一个整数 ()——测试用例的数量。
每个测试用例的第一行包含三个整数 (,,)——建筑的层数、最少需要的飞机数,以及实际发射的飞机总数。
每个测试用例的第二行包含 个整数 ()—— 表示发射第 架飞机的居民所在的楼层; 表示空缺。
在这个版本中,保证所有 。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出用 到 的数字填补空缺的方案数,使得飞机发射的时间顺序是可信的,结果对 取模。
示例
输入
2
3 2 4
0 0 0 0
5 5 7
0 0 0 0 0 0 0
输出
6
190
注意
在第一个测试用例中,所有 种可能的填补方式如下:
注意,数组 不是有效的填补方式,因为第 架飞机不可能由第 层的人发射(从他们的视角看,已经有 架飞机发射过了)。
另外,数组 也不是有效的填补方式,因为从第 层居民的角度看,只发射了 架飞机,而 。