p1470 最長字首 longest prefix在生物學中,一些生物的結構是用包含其要素的大寫字母序列來表示的。生物學家對於把長的序列分解成較短的序列(即元素)很感興趣。
如果乙個集合 p 中的元素可以通過串聯(元素可以重複使用,相當於 pascal 中的 「+」 運算子)組成乙個序列 s ,那麼我們認為序列 s 可以分解為 p 中的元素。元素不一定要全部出現(如下例中bbc就沒有出現)。舉個例子,序列 ababacabaab 可以分解為下面集合中的元素:
序列 s 的前面 k 個字元稱作 s 中長度為 k 的字首。設計乙個程式,輸入乙個元素集合以及乙個大寫字母序列 s ,設s'是序列s的最長字首,使其可以分解為給出的集合p中的元素,求s'的長度k。
輸入格式:
輸入資料的開頭包括 1..200 個元素(長度為 1..10 )組成的集合,用連續的以空格分開的字串表示。字母全部是大寫,資料可能不止一行。元素集合結束的標誌是乙個只包含乙個 「.」 的行。集合中的元素沒有重複。接著是大寫字母序列 s ,長度為 1..200,000 ,用一行或者多行的字串來表示,每行不超過 76 個字元。換行符並不是序列 s 的一部分。
輸出格式:
只有一行,輸出乙個整數,表示 s 符合條件的字首的最大長度。
輸入樣例#1:
a ab ba ca bbc輸出樣例#1:.ababacabaabc
11翻譯來自nocow
usaco 2.3
和 [hnoi2004]l語言 一樣
1 #include 2 #include 3 #include 4**5const
int maxn=200010;6
const
int maxm=210;7
8int
tot,len;910
char s[maxm][12
];11
12char
st[maxn],pl[maxn];
1314
intf[maxn];
1516
bool
b[maxn];
1718
struct
node ;
21node t[maxn];
2223 inline void build(int
p) 31 b[now]=true;32
return;33
}3435 inline void
lo()
3940
inthh() 58}
59 printf("
%d\n
",ans);
60return0;
61}
6263
int sb=hh();
64int main()
P1470 最長字首 Longest Prefix
在生物學中,一些生物的結構是用包含其要素的大寫字母序列來表示的。生物學家對於把長的序列分解成較短的序列 即元素 很感興趣。如果乙個集合 p 中的元素可以通過串聯 元素可以重複使用,相當於 pascal 中的 運算子 組成乙個序列 s 那麼我們認為序列 s 可以分解為 p 中的元素。元素不一定要全部出...
最長公共字首
描述 給k個字串,求出他們的最長公共字首 lcp 樣例 在 abcd abef 和 acef 中,lcp 為 a 在 abcdefg abcefg abcefa 中,lcp 為 abc 新知識點 vectorstrs既可以是一維的,也可以是多維的。在這裡講解三維的初始化。vector str str...
最長公共字首
編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。class solution object...