码迷,mamicode.com
首页 > 其他好文 > 详细

[bzoj1174] [Balkan2007]Toponyms

时间:2016-06-18 16:44:47      阅读:497      评论:0      收藏:0      [点我收藏+]

标签:

  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

标签:

原文地址:http://www.cnblogs.com/czllgzmzl/p/5596381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!