TouchStone
  Please Login
Login Sign Up
 Homepage  Problem Set  Examinations  Submissions  Discussions  Statistics
  • Home
  • Problem Set
  • P4813
  • Problem
  • P4813[Tjoi2018 day1]party
    Limits : Time Limit : - MS   Memory Limit : - KB
    Judgment Tips : 6S,256M
    Description

    小豆参加了 NOI 的游园会,会场上每完成一个项目就会获得一个奖章,奖章只会是 N, O, I 的字样。
    在会场上他收集到了 \(K\) 个奖章组成的串。兑奖规则是奖章串和兑奖串的最长公共子序列长度为小豆最后奖励的等级。
    现在已知兑奖串长度为 \(N\) ,并且在兑奖串上不会出现连续三个奖章为 NOI ,即奖章中不会出现子串 NOI
    现在小豆想知道各个奖励等级会对应多少个不同的合法兑奖串。

    Input Format

    第一行两个数$N$,$K$分别代表兑奖串的长度,小豆收集的奖章串的长度。
    第二行一共$K$个字符,表示小豆得到奖章串。

    Output Format

    一共$K+1$行,第i行表示小豆最后奖励等级为$i-1$的不同的合法兑奖串的个数,可能这个数会很大,结果对$10^9 + 7$取模。

    Sample Input

    3 2
    NO

    Sample Output

    1
    19
    6

    Hint
    样例解释

    最长公共子序列长度0的串有:III;

    最长公共子序列长度2的串有:NON, NNO, NOO, ONO,INO,NIO;

    除去NOI,余下的 $19(26-6-1)$ 种为最长公共子序列长度为 $1$ 。

    对于 $10\%$ 的数据, \(N \leq 10 , K \leq 10\)
    对于 $30\%$ 的数据, \(N \leq 100 , K \leq 4\)
    对于 $100\%$ 的数据, \(N \leq 1000 , K \leq 15\)