[bzoj1174] [Balkan2007]Toponyms
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[bzoj1174] [Balkan2007]Toponyms相关的知识,希望对你有一定的参考价值。
trie。
记录一下trie每个节点子树内有多少个叶子就可以算出答案了。
然而这题卡空间......空间......间......
所以就链式邻接表连边。。
时间复杂度O(len*53),len表示字符总数。注意这题字符总数有400+w
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 #define ll long long 6 using namespace std; 7 const int maxn=5002333; 8 int too[maxn],pre[maxn],last[maxn],sz[maxn],tot; 9 int i,j,k,n,m; 10 ll ans; 11 12 int ra;char rx; 13 inline int read(){ 14 rx=getchar(),ra=0; 15 while(rx<‘0‘||rx>‘9‘)rx=getchar(); 16 while(rx>=‘0‘&&rx<=‘9‘)ra*=10,ra+=rx-48,rx=getchar();return ra; 17 } 18 int main(){ 19 n=read();char x;int now,len; 20 for(i=1;i<=n;i++){ 21 now=len=0,x=getchar(); 22 while(x!=‘\\n‘){ 23 len++; 24 j=last[now];while(too[j]!=x&&j)j=pre[j]; 25 if(!j)too[++tot]=x,pre[tot]=last[now],last[now]=tot,now=tot; 26 else now=j; 27 sz[now]++,ans=max(ans,1LL*sz[now]*len); 28 x=getchar(); 29 } 30 } 31 printf("%lld\\n",ans); 32 }
以上是关于[bzoj1174] [Balkan2007]Toponyms的主要内容,如果未能解决你的问题,请参考以下文章
[bzoj1174] [Balkan2007]Toponyms
bzoj1174[Balkan2007]Toponyms Trie树