CF2233E1 Permutation Transmission (Easy Version)
题目描述
这是该题的简单版本。在本版本中,$ n $ 的上限以及所有测试用例中 $ n $ 的总和都不超过 $ 2\,000 $;此外,测试用例的最大数量为 $ 200 $。
有一个长度为 $ n $ 的排列 $ p $ $ ^{\text{∗}} $。
它通过某个通信信道被传送,方法如下:首先,将排列中每个数字 $ p_{i} $ 的所有 $ 0 $ 位的对应比特按顺序拼接为长度为 $ n $,只含 $ 0 $ 和 $ 1 $ 的字符串;接着同理将所有 $ 1 $ 位拼接成一个字符串,依此类推直到数字 $ n $ 的最高有效位。
例如,对于 $ p = [3, 1, 2, 4] $,依次发送了如下三行字符串:
1. “1100”;
2. “1010”;
3. “0001”。
你收到了全部这些字符串,但每行对应的是第几位的信息顺序已经丢失。也就是说,这些字符串被乱序接收。在上述例子中,收到的顺序可能是 “1010”、 “0001” 和 “1100”。
你的任务是判断,有多少种原始排列 $ p $ 可能被发送。当然,在传输过程中也可能数据被损坏,此时就不存在合适的原始排列 $ p $。
$ ^{\text{∗}} $ 长度为 $ n $ 的排列指的是包含 $ 1 $ 到 $ n $ 所有整数的数组,每个数字只出现一次。
输入格式
每组测试数据包含多个测试用例。第一行输入测试用例数 $ t $($ 1 \le t \le 200 $)。接下来依次给出每个测试用例。
每个测试用例的第一行输入一个整数 $ n $($ 1 \le n \le 2\,000 $)。
接下来的 $ \lceil\log_2 (n + 1) \rceil $ 行,每行包含一个长度为 $ n $ 的、仅由 $ 0 $ 和 $ 1 $ 组成的字符串,为接收到的数据(顺序已乱)。
附加输入约束:
- 所有测试用例中 $ n $ 的总和不超过 $ 2\,000 $。
输出格式
对于每个测试用例,输出一个整数,表示可能的原始排列 $ p $ 的个数。
说明/提示
在第一个样例中,只能得到一种排列 $ p = [1] $。
在第二个样例中,有 $ 2 $ 种可能的排列,分别为 $ [1, 2, 3, 4] $ 和 $ [2, 1, 3, 4] $。
在第四个样例中,不存在任何符合要求的原始排列。
由 ChatGPT 5 翻译