靈夢有n個單詞想要背,但她想通過一篇文章中的一段來記住這些單詞。
文章由m個單詞構成,她想在文章中找出連續的一段,其中包含最多的她想要背的單詞(重複的只算乙個)。並且在背誦的單詞量盡量多的情況下,還要使選出的文章段落盡量短,這樣她就可以用盡量短的時間學習盡可能多的單詞了。
第1行乙個數n,
接下來n行每行是乙個長度不超過10的字串,表示乙個要背的單詞。
接著是乙個數m,
然後是m行長度不超過10的字串,每個表示文章中的乙個單詞。
輸出檔案共2行。第1行為文章中最多包含的要背的單詞數,第2行表示在文章中包含最多要背單詞的最短的連續段的長度。
hotdog
milk
hotdog
dogmilk
hot對於30%的資料 n<=50,m<=500;
對於60%的資料 n<=300,m<=5000;
對於100%的資料 n<=1000,m<=100000;
map第二問維護乙個佇列一樣的東西,先一直讀,直到佇列中有ans1個元素,然後乙個乙個讀,在保證佇列中元素個數不變的情況下刪除隊頭元素。
#include#include#include
#include
using
namespace
std;
typedef unsigned
long
long
ull;
mapint>vis,map;
mapb;
ull hash(
char *s)
intmain()
scanf("%d
",&m);
for (int i=1;i<=m;i++)
}printf(
"%d\n
",sum);
vis.clear();
int h=0,t=1,sumx=0,minx=0x7ffffff
;
while (t<=m)
while (h1 || !map[b[h]]))
minx = min(minx,t-h);
}printf("%d
",minx);
}
手打雜湊(快)
#include#include#include
#define n 1010
#define m 100010
#define mod 100007
#define p 17
using
namespace
std;
inthash[mod],b[mod],vis[mod];
int get_hash(char *s)
intmain()
scanf("%d
",&m);
for (int i=1;i<=m;i++)
}printf(
"%d\n
",sum);
for (int i=1;i<=mod;i++) vis[i]=0
;
int h=0,t=1,sumx=0,minx=0x7ffffff
;
while (t<=m)
while (h1 || !hash[b[h]]))
minx = min(minx,t-h);
}printf("%d
",minx);
}
CodeVS3013 單詞背誦
靈夢有n個單詞想要背,但她想通過一篇文章中的一段來記住這些單詞。文章由m個單詞構成,她想在文章中找出連續的一段,其中包含最多的她想要背的單詞 重複的只算乙個 並且在背誦的單詞量盡量多的情況下,還要使選出的文章段落盡量短,這樣她就可以用盡量短的時間學習盡可能多的單詞了。第1行乙個數n,接下來n行每行是...
CodeVS3013 單詞背誦 做題筆記
題目描述 description 靈夢有n個單詞想要背,但她想通過一篇文章中的一段來記住這些單詞。文章由m個單詞構成,她想在文章中找出連續的一段,其中包含最多的她想要背的單詞 重複的只算乙個 並且在背誦的單詞量盡量多的情況下,還要使選出的文章段落盡量短,這樣她就可以用盡量短的時間學習盡可能多的單詞了...
單詞背誦方法
關於方法 有人複習單詞,一開始就找本大部頭的書背。其結果,單詞沒背牢,反而時間過去大半。閱讀也因此受到限制。這裡介紹乙個方法。雖說不上是最科學的,但還是有一定的科學性。把複習單詞分為兩步 第一步,先記下單詞的大概。所謂大概是指,單詞的大概意思呀,大部分意項。第二步,找本好的單詞輔導書,乙個意思乙個意...