題目鏈結
/*
簡單trie樹的應用,注意在初始化的時候要把cnt也初始化,不然,wa!
下面的四分**各有特點
*///陣列型,名字查詢。
#include
#include
using
namespace
std;
const
int maxn=1000000;
struct tire
};tire tree[maxn];
int tot=1,n,m;
void insert(char* s,int root)
root=tree[root].wd[k];
tree[root].cnt++;
}}int sum=0;
int query (int root)
}return sum;
}char name[1000000+5];
int main ()
printf("%d\n",query(root));
}return0;}
//指標型,dfs查詢
#include
#include
#include
const
int maxn=1000000+5;
const
int si=26;
int n;
char name[maxn];
struct node
root=root->chi[s[i]-'a'];
root->n++;
}}int query(node *root)
}return sum;
}void rease(node *root)
delete root;
}int main()
printf("%d\n",query(root));
}}//陣列型,dfs查詢
#include
#include
using
namespace
std;
const
int maxn=1000000;
struct tire
};tire tree[maxn];
int tot=1,n,m;
void insert(char* s,int root)
root=tree[root].wd[k];
tree[root].cnt++;
}}int sum=0;
int query (int root)
}return sum;
}char name[1000000+5];
int main ()
printf("%d\n",query(root));
}return0;}
//陣列型,名字查詢,名字在string中儲存,雖然可以節約空間,但是由於string只能用cin輸入,所以時間慢。
#include
#include
#include
#include
using
namespace
std;
const
int maxn=1000000;
struct tire
};tire tree[maxn];
int tot=1,n,m;
void insert(string s,int root)
root=tree[root].wd[k];
tree[root].cnt++;
}}int query (string s,int root)
return tree[root].cnt+1;
}string name[1000+5];
int main ()
int ans=0;
for(int i=1;i<=n;i++)
printf("%d\n",ans);
}return
0;}
最短的名字
在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人的名字都以 a 開頭。村...
最短的名字
description 在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人...
最短的名字
ription 在乙個奇怪的村子中,很多人的名字都很長,比如aaaaa,bbb and abababab。名字這麼長,叫全名顯然起來很不方便。所以村民之間一般只叫名字的字首。比如叫 aaaaa 的時候可以只叫 aaa 因為沒有第二個人名字的前三個字母是 aaa 不過你不能叫 a 因為有兩個人的名字都...