【KMP next树】51nod 1277 字符串中的最大值
来源:互联网 发布:php中的错误类型有哪些 编辑:程序博客网 时间:2024/05/17 07:29
题面在这里
首先要明确一个性质:字符串border的border是原串的border
所以一个前缀是多少个前缀的border,它的出现次数就是多少
所以在next树上,子树的大小就是它的出现次数
统计一下就好了
示例程序:
#include<cstdio>#include<cstring>#include<algorithm>#define LL long longusing namespace std;const int maxn=100005;int n,fail[maxn],num[maxn];int tot,lnk[maxn],nxt[maxn],son[maxn];inline void add(int x,int y){ son[++tot]=y;nxt[tot]=lnk[x];lnk[x]=tot;}char s[maxn];void dfs(int x){ num[x]=1; for (int j=lnk[x];j;j=nxt[j]) dfs(son[j]),num[x]+=num[son[j]];}int main(){ scanf("%s",s+1); n=strlen(s+1); fail[1]=0;add(0,1); for (int i=2,j=0;i<=n;i++){ while (j>0&&s[j+1]!=s[i]) j=fail[j]; if (s[j+1]==s[i]) j++; fail[i]=j;add(j,i); } dfs(0);LL ans=0; for (int i=1;i<=n;i++) ans=max(ans,(LL)num[i]*i); printf("%lld",ans); return 0;}
阅读全文
2 0
- [KMP next树] 51Nod 1277 字符串中的最大值
- 【KMP next树】51nod 1277 字符串中的最大值
- 51nod 1277 字符串中的最大值【KMP算法】【next树】
- 51nod-1277 字符串中的最大值(KMP)
- kmp-51nod 1277 字符串中的最大值
- 51 nod 1277 字符串中的最大值(KMP)
- 51nod 1277 字符串中的最大值(KMP)
- 51Nod 1277 字符串中的最大值 KMP next数组经典应用
- 51nod 1277 字符串中的最大值 (kmp之next数组的理解) O(n)可过
- 51NOD 1277 字符串中的最大值 【拓展KMP】
- 51nod 1277 字符串中的最大值(kmp)
- 【Kmp求字符串前缀在字符串出现的次数】51nod 1277 字符串中的最大值
- 51nod 1277 字符串中的最大值
- 51nod 1277 字符串中的最大值
- 51nod 1277 字符串中的最大值
- 51Nod-1277-字符串中的最大值
- 51Nod-1277-字符串中的最大值
- BZOJ 3670: [Noi2014]动物园&&51nod 1277 字符串中的最大值
- gem install报错ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) Errno::ECONNRESET:
- D
- 怎样从0开始搭建一个测试框架_6——PageObject
- TextCNN
- 【DL--13】CNN 两大特性(局部连接、权重共享)
- 【KMP next树】51nod 1277 字符串中的最大值
- Struts2学习笔记(五)——result结果类型
- OpenSSL生成自签名证书
- kubernetes学习记录(4)——创建kubernetes覆盖网络
- http 请求工具
- C# 程序员最常犯的 10 个错误 【已翻译100%】 英文原文:Top 10 Mistakes that C# Programmers Make 标签: C# oschina 推荐于 3年前 (共
- MIMO技术杂谈(一):鱼与熊掌能否兼得?--浅谈分集与复用的权衡
- 怎样从0开始搭建一个测试框架_7——接口
- CSS动画(补充一些常用写法)