題目 1599:
藍(lán)橋杯算法訓(xùn)練VIP-Representative Sampling
時(shí)間限制: 2s
內(nèi)存限制: 192MB 提交: 26 解決: 0
題目描述
來自ABBYY的小明有一個(gè)與“細(xì)胞與遺傳學(xué)研究所”的合作。最近,研究所用一個(gè)新的題目考驗(yàn)小明。題目如下。
有由n個(gè)細(xì)胞組成的一個(gè)集合(不一定不同)每個(gè)細(xì)胞是一個(gè)由小寫拉丁字母組成的字符串。科學(xué)家給小明提出的問題是從給定集合中選出一個(gè)大小為k的子集,使得所選子集的代表值最大。
小明做了些研究并得出了一個(gè)結(jié)論,即一個(gè)蛋白質(zhì)集合的代表制可以用一個(gè)方便計(jì)算的整數(shù)來表示。我們假設(shè)當(dāng)前的集合為{a1,?...,?ak},包含了k個(gè)用以表示蛋白質(zhì)的字符串。那么蛋白質(zhì)集合的代表值可以用如下的式子來表示:
其中f(x,?y)表示字符串x和y的最長公共前綴的長度,例如:
f(" abc" , " abd" )?=?2 , f(" ab" , " bcd" )?=?0.
因此,蛋白質(zhì)集合{" abc" , " abd" , " abe" }的代表值等于6,集合{" aaa" , " ba" , " ba" }的代表值等于2。
發(fā)現(xiàn)了這個(gè)之后,小明要求賽事參與者寫一個(gè)程序選出,給定蛋白質(zhì)的集合中的大小為k的子集中,能獲得最大可能代表性值得一個(gè)子集。幫助他解決這個(gè)問題吧!
輸入格式
輸入數(shù)據(jù)第一行包含2個(gè)正整數(shù)n和k(1≤k≤n),由一個(gè)空格隔開。接下來的n行每一行都包含對(duì)蛋白質(zhì)的描述。每個(gè)蛋白質(zhì)都是一個(gè)僅有不超過500個(gè)小寫拉丁字母組成的非空字符串。有些字符串可能是相等的。
【數(shù)據(jù)規(guī)?!?/span>
100%的數(shù)據(jù)保證:1?≤?n?≤?2000
輸出格式
輸出一個(gè)整數(shù),表示給定蛋白質(zhì)集合的大小為k的子集的代表值最大可能是多少。
提示
零基礎(chǔ)同學(xué)可以先學(xué)習(xí)
視頻課程,包含C/C++、Python、百練、藍(lán)橋杯輔導(dǎo)、算法數(shù)據(jù)結(jié)構(gòu)等課程,提供視頻講解以及配套習(xí)題,還有老師答疑,
點(diǎn)擊這里了解課程詳情
標(biāo)簽