最短的名字(簡單字典樹)

2021-07-16 10:19:57 字數 1191 閱讀 1129

time limit: 5000 ms memory limit: 65536 kb

在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa, bbb and abababab。

名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫』aaaaa』的時候可以只叫』aaa』,因為沒有第二個人名字的前三個字母是』aaa』。不過你不能叫』a』,因為有兩個人的名字都以』a』開頭。村里的人都很聰明,他們總是用最短的稱呼叫人。輸入保證村里不會有乙個人的名字是另外乙個人名字的字首(作為推論,任意兩個人的名字都不會相同)。

如果村里的某個人要叫所有人的名字(包括他自己),他一共會說多少個字母?

input

輸入第一行為資料組數t (t<=10)。每組資料第一行為乙個整數n(1<=n<=1000),即村里的人數。以下n行每行為乙個人的名字(僅有小寫字母組成)。輸入保證乙個村里所有人名字的長度之和不超過1,000,000。

output

對於每組資料,輸出所有人名字的字母總數。

sample input

1 3

aaaaa

bbb

abababab

sample output

【題意】 我就不用解釋了,都是中文,看不懂我就呵呵了。。。

【解題思路】 乙個最基礎的字典樹,不懂字典樹的建議先去了解一下字典樹。

【ac**】

#include

#include

#define maxn 1000005

using namespace std;

int trz[maxn][26],val[maxn],ans,vis;

char a[maxn];

void build(int

id,char b)

else

id=trz[id][b[i]-'a'];

val[id]++;

}}void dfs(int

id,int sum)

for(int i=0;i<26;i++)

if(trz[id][i])

dfs(trz[id][i],sum+1);

}int main()

ans=0;

dfs(0,0);

printf("%d\n",ans);

}return

0;}

簡單字典樹題目總結

關於字典樹請見 字典樹 trie 以下是我最近做的一些關於字典樹的題目,是hdu的一些經典題。hdu1251 統計難題 最簡單的字典樹題,對於字典中的字串插入後依次回答詢問子串個數即可,模板即為此題。hdu1305 immediate decodability 這題要求的是對於乙個字典是否滿足其中任...

HDU 1251 1671 (簡單字典樹)

簡單字典樹 hdu 1251 include include include include include using namespace std const int max 26 struct node struct node root 根節點 struct node build 建樹 p co...

CSU 1115 最短的名字(字典樹)

description 在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人...