#3069. [USACO23FEB] Problem Setting P

[USACO23FEB] Problem Setting P

题目描述

注意:本题的内存限制为 512MB,是默认值的两倍。

农夫约翰创建了 N(1N105)N(1 \le N \le 10^5) 个问题。然后他招募了 M(1M20)M (1 \le M \le 20) 个测试解答者,每个解答者将每个问题评为“简单”或“困难”。

他的目标是创建一个按难度递增顺序排列的问题集,该问题集由他的 NN 个问题的某个子集按某种顺序排列而成。必须不存在这样的一对问题,使得某个测试解答者认为顺序中后面的那个问题简单,而前面的那个问题困难。

计算他可以形成的不同非空问题集的数量,结果对 109+710^9+7 取模。

输入格式

第一行包含 NNMM

接下来的 MM 行每行包含一个长度为 NN 的字符串。如果测试解答者认为第 ii 个问题简单,则该字符串的第 ii 个字符为 E,否则为 H

输出格式

FJ 可以形成的不同问题集的数量,对 109+710^9+7 取模。

输入输出样例 #1

输入 #1

3 1
EHE

输出 #1

9

输入输出样例 #2

输入 #2

10 6
EHEEEHHEEH
EHHHEEHHHE
EHEHEHEEHH
HEHEEEHEEE
HHEEHEEEHE
EHHEEEEEHE

输出 #2

33

说明/提示

样例 1 的解释

九个可能的问题集如下:

[1][1]
[1,2][1,2]
[1,3][1,3]
[1,3,2][1,3,2]
[2][2]
[3][3]
[3,1][3,1]
[3,2][3,2]
[3,1,2][3,1,2]

注意问题集内问题的顺序很重要。

评分

  • 输入 343-4M=1M=1
  • 输入 5145-14M16M \le 16
  • 输入 152215-22:无额外限制。

题面翻译由 ChatGPT-4o 提供。