P9131 [USACO23FEB] Problem Setting P
题目描述
**注意:本题的内存限制为 512MB,是默认值的两倍。**
农夫约翰创建了 $N(1 \le N \le 10^5)$ 个问题。然后他招募了 $M (1 \le M \le 20)$ 个测试解答者,每个解答者将每个问题评为“简单”或“困难”。
他的目标是创建一个按难度递增顺序排列的问题集,该问题集由他的 $N$ 个问题的某个子集按某种顺序排列而成。必须不存在这样的一对问题,使得某个测试解答者认为顺序中后面的那个问题简单,而前面的那个问题困难。
计算他可以形成的不同非空问题集的数量,结果对 $10^9+7$ 取模。
输入格式
第一行包含 $N$ 和 $M$。
接下来的 $M$ 行每行包含一个长度为 $N$ 的字符串。如果测试解答者认为第 $i$ 个问题简单,则该字符串的第 $i$ 个字符为 `E`,否则为 `H`。
输出格式
FJ 可以形成的不同问题集的数量,对 $10^9+7$ 取模。
说明/提示
### 样例 1 的解释
九个可能的问题集如下:
$[1]$
$[1,2]$
$[1,3]$
$[1,3,2]$
$[2]$
$[3]$
$[3,1]$
$[3,2]$
$[3,1,2]$
注意问题集内问题的顺序很重要。
### 评分
- 输入 $3-4$:$M=1$
- 输入 $5-14$:$M \le 16$
- 输入 $15-22$:无额外限制。
题面翻译由 ChatGPT-4o 提供。