当前位置: 首页 > news >正文

企业网站建设标准网站建设工程师招聘

企业网站建设标准,网站建设工程师招聘,旅游网站设计与实现,怎么做网站扫描NSUBSTR - Substrings 题面翻译 你得到了一个最多由 250000250000250000 个小写拉丁字母组成的字符串 SSS。定义 F(x)F(x)F(x) 为 SSS 的某些长度为 xxx 的子串在 SSS 中的最大出现次数。即 F(x)max{times(T)}F(x)max\{times(T)\}F(x)max{times(T)},满足 TTT 是 S…

NSUBSTR - Substrings

题面翻译

你得到了一个最多由 250000250000250000 个小写拉丁字母组成的字符串 SSS。定义 F(x)F(x)F(x)SSS 的某些长度为 xxx 的子串在 SSS 中的最大出现次数。即 F(x)=max{times(T)}F(x)=max\{times(T)\}F(x)=max{times(T)},满足 TTTSSS 的子串且 ∣T∣=x|T|=xT=x。例如当 S=ababaS=ababaS=ababaF(3)=2F(3)=2F(3)=2 ,因为 SSS 中有一个出现 222 次的子串 abaabaaba。 你的任务是对于每个 1≤i≤∣S∣1\le i \le |S|1iS 输出 F(i)F(i)F(i)

题目描述

You are given a string S which consists of 250000 lowercase latin letters at most. We define F(x) as the maximal number of times that some string with length x appears in S. For example for string ‘ababa’ F(3) will be 2 because there is a string ‘aba’ that occurs twice. Your task is to output F(i) for every i so that 1<=i<=|S|.

输入格式

String S consists of at most 250000 lowercase latin letters.

输出格式

Output |S| lines. On the i-th line output F(i).

样例 #1

样例输入 #1

ababa

样例输出 #1

3
2
2
1
1

题意:

给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值。求F(1)…F(Length(S))

思路:

构建 s 的 SAM,对于每个 SAM 状态 u 能表示的子串长度范围是 [ len[fa(u)] + 1, len[s] ],这些子串的出现次数等价于 cnt[u]

那么问题变成用 cnt[u] 去区间更新 [ len[fa(u)] + 1, len[u] ] 的最大值。(无脑线段树?SPOJ 时限仅 100 ms,喜提TLE。怎么优化呢?)

我们发现 f[i] 是非严格单调递减的,我们 只用 cnt[u] 去更新 f[len[u]], 然后使用推标记的方法,从后向前令 f[i] = max(f[i], f[i + 1]) 即可

代码:

#include<bits/stdc++.h>using namespace std;const int N = 2.5e5 + 10, M = N << 1;
int ch[M][26], len[M], fa[M], np = 1, tot = 1;
long long cnt[M], f[N];
vector<int> g[M];
char s[N];void extend(int c)
{int p = np; np = ++tot;len[np] = len[p] + 1, cnt[np] = 1;while (p && !ch[p][c]) {ch[p][c] = np;p = fa[p];}if (!p) {fa[np] = 1;}else {int q = ch[p][c];if (len[q] == len[p] + 1) {fa[np] = q;}else {int nq = ++tot;len[nq] = len[p] + 1;fa[nq] = fa[q], fa[q] = fa[np] = nq;while (p && ch[p][c] == q) {ch[p][c] = nq;p = fa[p];}memcpy(ch[nq], ch[q], sizeof ch[q]);}}
}void dfs(int u)
{for (auto son : g[u]) {dfs(son);cnt[u] += cnt[son];}int l = len[fa[u]] + 1, r = len[u];f[r] = max(1ll * f[r], 1ll * cnt[u]);
}signed main()
{scanf("%s", s);int n = strlen(s);for (int i = 0; s[i]; ++i) {extend(s[i] - 'a');}for (int i = 2; i <= tot; ++i) {g[fa[i]].emplace_back(i);}dfs(1);for (int i = n - 1; i >= 1; --i) {f[i] = max(f[i], f[i + 1]);}for (int i = 1; i <= n; ++i) {printf("%lld\n", f[i]);}return 0;
}
http://www.yayakq.cn/news/927773/

相关文章:

  • 东莞建外贸网站好湛江网站建设方案策划
  • 合肥网站建设求职简历河南中国建设厅官方网站
  • 网站开发后端框架什么意思网络营销是什么的具体应用
  • 网站被k 申诉国内重大新闻2022
  • 蚌埠本地网站免费网站诊断
  • 域名购买成功后网站怎么建设wordpress主题文件路径
  • 国内网站域名百家号排名
  • 网站建设兰州wordpress本地化
  • html5精美网站怎么做销售网站
  • 开发一个网站多少钱wordpress 数学主题
  • 云南省文山建设厅网站网站共享备案可以申请支付接口
  • asp网站500错误企业管理系统网站开发标书
  • 网站维护公告模板网站主题和建设
  • 某某公司网站建设论文公众号制作素材
  • 便宜网站建设 优帮云WordPress如何快速排名
  • 黑龙江生产建设兵团网站电商小程序价格
  • 网站跳转代码 html网页源码怎么做网站
  • 查询个人信息的网站房产网站建设网站推广
  • 株洲网站制作公司有哪些ppt电子商务网站建设
  • 与别人相比自己网站建设优势公众号怎么做临时链接
  • 爱站网络挖掘词网站右下角弹出广告代码
  • 电子商务做网站wordpress 网易云课堂
  • 自己如何做企业网站可以自己制作广告的软件
  • 济宁市环保局建设项目审批网站alexa排名分析
  • 吉林省建设厅证件查询网站什么是企业网站源码
  • 规划管理部门的网站建设wordpress的极限访问量
  • 怎么看网站开发的发展自考
  • 网站建设沈阳公司山东鸿泰建设集团有限公司网站
  • 企业网站建设费用怎么记账百度seo优化软件
  • 非自己的网站如何做二次跳转平湖建设局网站