CodeVS3013 單詞背誦

2022-04-06 01:31:56 字數 1740 閱讀 1003

靈夢有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個單詞構成,她想在文章中找出連續的一段,其中包含最多的她想要背的單詞 重複的只算乙個 並且在背誦的單詞量盡量多的情況下,還要使選出的文章段落盡量短,這樣她就可以用盡量短的時間學習盡可能多的單詞了...

單詞背誦方法

關於方法 有人複習單詞,一開始就找本大部頭的書背。其結果,單詞沒背牢,反而時間過去大半。閱讀也因此受到限制。這裡介紹乙個方法。雖說不上是最科學的,但還是有一定的科學性。把複習單詞分為兩步 第一步,先記下單詞的大概。所謂大概是指,單詞的大概意思呀,大部分意項。第二步,找本好的單詞輔導書,乙個意思乙個意...