如題,給定n個字串(第i個字串長度為mi,字串內包含數字、大小寫字母,大小寫敏感),請求出n個字串中共有多少個不同的字串。
輸入格式:
第一行包含乙個整數n,為字串的個數。
接下來n行每行包含乙個字串,為所提供的字串。
輸出格式:
輸出包含一行,包含乙個整數,為不同的字串個數。
輸入樣例#1:
5輸出樣例#1:abcaaaa
abcabcc
12345
4時空限制:1000ms,128m
資料規模:
對於30%的資料:n<=10,mi≈6,mmax<=15;
對於70%的資料:n<=1000,mi≈100,mmax<=150
對於100%的資料:n<=10000,mi≈1000,mmax<=1500
樣例說明:
樣例中第乙個字串(abc)和第三個字串(abc)是一樣的,所以所提供字串的集合為,故共計4個不同的字串。
tip: 感興趣的話,你們可以先看一看以下三題:
bzoj3097:
bzoj3098:
bzoj3099:
如果你仔細研究過了(或者至少仔細看過ac人數的話),我想你一定會明白字串雜湊的正確姿勢的^_^
#include#include心若向陽,無言悲傷#include
#define inf 1000007
using
namespace
std;
struct
node
edge[
1000007
];string
s;int n,sum(0),num(0),head[1000007]=;
bool
hash()
intmain()
printf("%d
",sum);
return0;
}
字串雜湊 模板
以下文字 據我的理解,hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。字串hash的種類還是有很多種...
模板 字串雜湊
如題,給定n個字串 第i個字串長度為mi,字串內包含數字 大小寫字母,大小寫敏感 請求出n個字串中共有多少個不同的字串。第一行包含乙個整數n,為字串的個數。接下來n行每行包含乙個字串,為所提供的字串。輸出包含一行,包含乙個整數,為不同的字串個數。s am plei nput sample input...
字串雜湊(模板)
尋找長度為n的主串s中的匹配串t 長度為m 出現的位置或次數屬於字串匹配問題。字串雜湊就是將每個字串轉化為乙個數值,然後遍歷主串,判斷在主串起始位置為i長度為m的字串的雜湊值與匹配串的雜湊值是否相等即可,每次判斷為o 1 的時間。這樣就可以轉化為o n 的時間完成判斷。若求字串中第i位到第j位的雜湊...