最长前缀

测试数据来自 system/2071

作业已超过截止时间,您无法递交本题目。

时间限制:1秒  内存限制:256M


【题目描述】

  如果一个集合 \(P\) 中的一些单词通过串联组成了一个序列 \(S\)(单词可以重复使用),那么我们认为序列 \(S\) 可以分解为 \(P\) 中的单词。举个例子,对于 \(P =\) { A, AB, BA, CA, BBC },则序列 ABABACABAAB 可以分解为 \(P\) 中的单词。

  序列 \(S\) 的前面 \(K\) 个字符称作 \(S\) 中长度为 \(K\) 的前缀。

  现在请你设计一个程序,输入一个元素集合 \(P\) 以及一个大写字母序列 \(S\) ,请你求 \(S\) 的一个最长前缀 \(S'\),使得\(S'\) 可以分解为给出的集合 \(P\) 中的元素,求 \(S'\) 的最长长度。

【输入格式】

  输入数据的开头包括 1..200 个单词(长度为 1..10 )组成集合 \(P\),用连续的以空格分开的字符串表示。字母全部是大写,数据可能不止一行。元素集合结束的标志是一个只包含一个 “.” 的行。集合中的元素没有重复。接着是大写字母序列 \(S\) ,长度为 1..200,000 ,用一行或者多行的字符串来表示,每行不超过 76 个字符。换行符并不是序列 \(S\) 的一部分。

【输出格式】

  只有一行,输出一个整数,表示 \(S\) 符合条件的前缀的最大长度。

【输入输出样例】

 Input

A AB BA CA BBC
.
ABABACABAABC

 Output

11

【数据限制】

  \(100\%\) 的数据满足:集合的元素个数不超过200,字符串S的长度不超过200,000。

【来源】

  Mr.he

序列最优分组练习题

未认领
状态
已结束
题目
10
开始时间
2025-03-03 00:00
截止时间
2025-04-05 23:59
可延期
24.0 小时