【题目描述】
给出 $n$ 和一个 01 串集合 $S$,请求出所有长度为 $n$ 的 $\text{01}$ 回文串中,有多少个串 $s$,不存在 $1\le l_1\le r_1< l_2\le r_2\le |s|$ 使得 $s[l_1,r_1]\in S$ 且 $s[l_2,r_2]\in S$ 呢?即不存在两个下标不相交的子串都存在于集合 $S$ 中。
由于答案可能很大,你只需要回答其对 $10^9+7$ 取模后的值。
【输入格式】
第一行两个整数 $n,|S|$。
接下来 $|S|$ 行,每行一个 $S$ 中的 $\text{01}$ 串。
【输出格式】
一行一个整数表示答案。
【样例 $\text{1}$ 输入】
5 1
0
【样例 $\text{1} 输出$】
2
【样例 $\text{1} 解释$】
两个符合题意的串 $s$ 是:$11111$ 和 $11011$。
【样例 $\text{2}$、$\text{3}$、$\text{4}$】
见 $/ex\_cstr2.in、/ex\_cstr3.in、/ex\_cstr4.in$ 与 $/ex_cstr2.out、/ex_cstr3.out、/ex_cstr4.out$。
样例 $2\sim 4$ 分别满足子任务 $2,4,8$ 的限制。
【测试点约束】
对于所有测试点,$1\le n\le 2000$,$S$ 中不存在空串,记 $L$ 表示 $S$ 中最长串长度,$M$ 表示 $S$ 中串的长度和。
本题采用捆绑测试,只有通过了一个子任务中所有测试点才能得到该测试点的分数。
每个子任务的具体限制见下表:
子任务编号 | $n\le$ | $L\le$ | $M\le$ | 特殊性质 | 分值 | ||
---|---|---|---|---|---|---|---|
$1$ | $2000$ | $30$ | $0$ | $ | S | =0$ | $10$ |
$2$ | $10$ | $10$ | $10$ | $ | S | =1$ | $10$ |
$3$ | $40$ | $10$ | $50$ | $10$ | |||
$4$ | $50$ | $30$ | $1000$ | $10$ | |||
$5$ | $100$ | $30$ | $30$ | $ | S | =1$ | $10$ |
$6$ | $2000$ | $30$ | $30$ | $ | S | =1$ | $10$ |
$7$ | $200$ | $30$ | $300$ | $10$ | |||
$8$ | $300$ | $30$ | $1000$ | $10$ | |||
$9$ | $1000$ | $30$ | $1000$ | $10$ | |||
$10$ | $2000$ | $30$ | $1000$ | $10$ |