[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 }
View Code

 

以上是关于[bzoj1174] [Balkan2007]Toponyms的主要内容,如果未能解决你的问题,请参考以下文章

[bzoj1174] [Balkan2007]Toponyms

bzoj1174[Balkan2007]Toponyms Trie树

bzoj 1176: [Balkan2007]Mokia

[BZOJ1176][Balkan2007]Mokia

[BZOJ1176][Balkan2007]Mokia cdq+树状数组

bzoj千题计划144:bzoj1176: [Balkan2007]Mokia