CodeVS3013 單詞背誦 做題筆記

2021-07-10 01:10:03 字數 1399 閱讀 9329

題目描述 description 靈夢有n個單詞想要背,但她想通過一篇文章中的一段來記住這些單詞。

文章由m個單詞構成,她想在文章中找出連續的一段,其中包含最多的她想要背的單詞(重複的只算乙個)。並且在背誦的單詞量盡量多的情況下,還要使選出的文章段落盡量短,這樣她就可以用盡量短的時間學習盡可能多的單詞了。
輸入描述 input description 第1行乙個數n,

接下來n行每行是乙個長度不超過10的字串,表示乙個要背的單詞。

接著是乙個數m,

然後是m行長度不超過10的字串,每個表示文章中的乙個單詞。

輸出描述 output description

輸出檔案共2行。第1行為文章中最多包含的要背的單詞數,第2行表示在文章中包含最多要背單詞的最短的連續段的長度。

樣例輸入 sample input 3

hotdog

milk

hotdog

dogmilk

hot樣例輸出 sample output 3

資料範圍及提示 data size & hint 對於30%的資料 n<=50,m<=500;

對於60%的資料 n<=300,m<=5000;

對於100%的資料 n<=1000,m<=100000;

字串hash+某種奇怪的區間統計o(n)

hash函式可以把每個小寫字母字串表示成乙個獨一無二的27進製數。

#include 

#include

#include

#include

#include

using

namespace

std;

const

int mod=5000000;

typedef

unsigned

long

long ll;

int n,m,cnt=0,t=0,ans=0,ans=0x7fffffff,v[mod+2];

char ch[12];

struct hash hash[mod+2];

ll godigit (char *s)

return ans;

}int hash (ll val)

int main ()

scanf("%d",&m);

for (int i=1;i<=m;i++)

}printf("%d\n",cnt);

int l=0,r=1;

while (r<=m)

while ((!hash[v[l]].mark||hash[v[l]].col>1)&&lprintf("%d\n",ans);

}

CodeVS3013 單詞背誦

靈夢有n個單詞想要背,但她想通過一篇文章中的一段來記住這些單詞。文章由m個單詞構成,她想在文章中找出連續的一段,其中包含最多的她想要背的單詞 重複的只算乙個 並且在背誦的單詞量盡量多的情況下,還要使選出的文章段落盡量短,這樣她就可以用盡量短的時間學習盡可能多的單詞了。第1行乙個數n,接下來n行每行是...

CodeVS3013 單詞背誦

靈夢有n個單詞想要背,但她想通過一篇文章中的一段來記住這些單詞。文章由m個單詞構成,她想在文章中找出連續的一段,其中包含最多的她想要背的單詞 重複的只算乙個 並且在背誦的單詞量盡量多的情況下,還要使選出的文章段落盡量短,這樣她就可以用盡量短的時間學習盡可能多的單詞了。第1行乙個數n,接下來n行每行是...

2010單詞這樣背

轉貼 單詞這樣背 第一條,就是 一定要每次都大量地背。因為自己不比別人聰明,所以背完單詞,別人忘掉五分之一,自己決不會比別人忘得少。然而,別人每天背十個單詞,自己卻可以背一百個,忘掉五分之一,還剩八十個,是別人最聰明狀態下的十倍。每天一百個是最低限。其實背到後來您會發現這個要求並不高,乙個月後,您可...