Logo Universal Online Judge

UOJ

时间限制:1 s 空间限制:512 MB
Statistics

【题目描述】

给出 $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$