题目描述
贝西在玩电脑游戏!在游戏中,键盘的’A’,’B’和’C’三个按键是唯一可用的。贝西可以根据她的需要随意按这几个键。但是游戏里只有N(1 <= N<= 20)种招式。一个招式命令就是由‘A’,’B’,’C’三个按键构成的一个长度在1到15间的按键组合。
当贝西按出了一个招式命令,她会得到1分。多个招式可以同时重叠使用。比如当N=3时,有3个招式命令”ABA”,”CB”,和”ABACB”.
但贝西按下”ABACB”时,她将得到3分。
贝西想尽可能多得分,如果她总共按了K(1 <= K <= 1,000)次按键,她能得到的最大得分是多少?
输入格式
第一行,两个空格间隔的整数N 和 K
接下来N行,每行表示一个招式命令
输出格式
输出一个整数,表示最大得分。
样例数据
样例输入
3 7
ABA
CB
ABACB
样例输出
4
样例说明
按键顺序是ABACBCB, 得到4分
ABA1分,ABACB分, CB2分。
题目分析
做完poj1625再做这些题感觉好水啊!
建立AC自动机方式同poj1625,只是将危险结点标记传递改成了数目相加->见代码
f[i,j]表示root->j长度为i的链上最多的combo数
源代码
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdlib>
#include<vector>