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

网站建设公司的前景怎么建立和设计公司网站

网站建设公司的前景,怎么建立和设计公司网站,鹿泉营销型网站制作价格低,建站网站苏州[POI2006] OKR-Periods of Words——最大周期长度(扩展最小周期长度) [原题链接](P3435 [POI2006] OKR-Periods of Words - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)) 字符串的周期 讲这道题之前,我们先聊一聊字符串的周期。我们要明确周期和border两个概念 …

[POI2006] OKR-Periods of Words——最大周期长度(扩展最小周期长度)

[原题链接](P3435 [POI2006] OKR-Periods of Words - 洛谷 | 计算机科学教育新生态 (luogu.com.cn))


字符串的周期

讲这道题之前,我们先聊一聊字符串的周期。我们要明确周期border两个概念

周期

对字符串 s s s 0 < p ≤ ∣ s ∣ 0<p\leq \left|s \right| 0<ps,若 s [ i ] = s [ i + p ] s[i]=s[i+p] s[i]=s[i+p]对所有 i ∈ [ 0 , ≤ ∣ s ∣ − p − 1 ] i \in [0,\leq \left|s \right| -p-1] i[0,sp1] 成立,则称 p p p s s s的周期

border

对字符串 s s s 0 < p < ∣ s ∣ 0<p< \left|s \right| 0<p<s,若s长度为r的前缀和长度为r的后缀相等,就称s长度为r的前缀是s的border

由s由长度为r的border可以推导出 ≤ ∣ s ∣ − r \leq \left|s \right|-r sr是s的周期

根据kmp的next数组,可以得到s(下标从0开始)的所有border长度,next[n-1],next[next[n-1]-1],…

显然s的最小周期 n − n e x t [ n − 1 ] n-next[n-1] nnext[n1]

思路

现在我们回到该题:

该题就是让我们求字符串 s 1 s_1 s1的最小周期

代码

代码如下

#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;char c[N];
int ne[N];int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n;// 字符串下标从1开始cin >> n >> c + 1;// 获取next数组for (int i = 2, j = 0; i <= n; i ++) {while (j && c[i] != c[j + 1])j = ne[j];if (c[i] == c[j + 1]) {j ++;ne[i] = j;}}cout << n - ne[n];return 0;
}

扩展:最大周期长度

让每一个next数组的值都是最短前缀

核心代码

int j = n;
// 转换为最短前缀
while (ne[j]) j = ne[j];
// 记忆化存储
if (ne[i])  ne[i] = j;
// 最大周期长度
len = n - j;

例题

[[POI2006] OKR-Periods of Words](P3435 [POI2006] OKR-Periods of Words - 洛谷 | 计算机科学教育新生态 (luogu.com.cn))

分析

求每个子串的最大周期长度

样例分析

bab 2

baba 2

babab 4

bababa 4

bababab 6

babababa 6

参考代码

#include <iostream>using namespace std;const int N = 1e6 + 10;
typedef long long LL;char s[N];
LL ne[N];int main() {ios::sync_with_stdio(0);cin.tie(0);int n;cin >> n >> s + 1;for (int i = 2, j = 0; i <= n; i ++) {while (j && s[i] != s[j + 1])j = ne[j];if (s[i] == s[j+1])j ++;ne[i] = j;}LL ans = 0;for (int i = 2; i <= n; i ++) {int j = i;while (ne[j]) {j = ne[j];}if (ne[i])  ne[i] = j;ans += i-j;}cout << ans << endl;return 0;
}
http://www.dtcms.com/a/553439.html

相关文章:

  • 【项目实战1 -瑞吉外卖|day21 】
  • 变分自编码器(VAE):用概率解锁生成式AI的“基因密码”
  • C++ 容器入门:从初始化到常用操作全解析
  • 飞致云开源社区月度动态报告(2025年10月)
  • 企业网站建设的步骤网站维护包括哪些
  • 网站建设缺乏个性网站如何优化关键词
  • GNN变体
  • SpringMVC基础入门
  • XiangJsonCraft v1.1.0发布:JSON配置网页的终极进化,支持所有CSS选择器!
  • UVa 12670 Counting Ones
  • C++17(新特性)
  • 韩国风网站什么网站有做册子版
  • day58-Shell编程(第四部分)
  • 用AI写了一个文档拼音标注工具 中文+拼音一键生成
  • 做网站还有意义同样是div 怎么有些网站收录少 有些多
  • 企必搜做网站做国际物流在哪些网站找客户
  • 移动端适配完全指南:从基础到最佳实践
  • 使用JMeter进行API性能压测(执行篇)
  • IntelliJ IDEA 远程调试(Remote Debugging)教程
  • 网站服务器++免费做电子手抄报的网站
  • 单页网站的优点网络公司是做什么的?
  • 阿瓦隆 Q 90T矿机:低功耗高效挖矿,是否值得选择?
  • 印度实时股票数据源接口对接文档-IPO新股、k线数据
  • HTTPS接口国密安全设计(含防重放设计)
  • 网站设计公司(信科网络)中国制造网外贸平台怎么注册
  • 网站模版如何去除title版权信息499元做网站
  • 武进建设局网站首页胖鼠wordpress
  • 机器学习第一阶段
  • Linux内核RDMA用户态内存映射机制深度解析:零拷贝高性能的基石
  • 组态软件和实时数据库区别大吗?