首页 > 其他分享 >OKR-Periods of Words

OKR-Periods of Words

时间:2024-05-05 15:11:06浏览次数:24  
标签:abab OKR 前缀 long ab Periods Words 字符串

[POI2006] OKR-Periods of Words

题面翻译

对于一个仅含小写字母的字符串 \(a\),\(p\) 为 \(a\) 的前缀且 \(p\ne a\),那么我们称 \(p\) 为 \(a\) 的 proper 前缀。

规定字符串 \(Q\) 表示 \(a\) 的周期,当且仅当 \(Q\) 是 \(a\) 的 proper 前缀且 \(a\) 是 \(Q+Q\) 的前缀。若这样的字符串不存在,则 \(a\) 的周期为空串。

例如 ababab 的一个周期,因为 ababab 的 proper 前缀,且 ababab+ab 的前缀。

求给定字符串所有前缀的最大周期长度之和。

样例 #1

样例输入 #1

8
babababa

样例输出 #1

24

数据范围

$k (1\le k\le 1\ 000\000) $

解析

字符串周期,阅读理解题。

如上图,将白 \(X\) 复制一倍,这时 \(Y\) 是所有 \(X\) 的子串,所以黄色框起来的 \(Y\) 必须相同。

为了让 \(X \times 2\) 刚好和 \(Y\) 对齐,\(Y\) 前后相同的部分应尽量短,也就是求最短的 \(border\).

答案长度就是 \(len-p_{min}\) (减去后面那两个 \(Y\)),

求最短的前缀函数见 动物园

但是暴力求解会 \(\mathbb{T}\) ,可采用记忆化,每次找到最小的就把当前 \(p\) 置成最小值。

code

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
long long n,p[N];
string s;
long long ans;
int main()
{
	scanf("%lld",&n); cin>>s;
	for(int i=1;i<n;i++)
	{
		int j=p[i-1];
		while(j&&s[i]!=s[j]) j=p[j-1];
		p[i]=j+(s[i]==s[j]);
	}
	for(int i=1;i<n;i++)
	{
		int j=p[i]; if(!j) continue;
		while(p[j-1]) j=p[j-1];
		p[i]=j;
		ans+=i+1-j;	
	}
	printf("%lld\n",ans);
	return 0;
}

注意

KMP j=p[j-1] ,中的 j-1 是为了让长度和下标对齐。

标签:abab,OKR,前缀,long,ab,Periods,Words,字符串
From: https://www.cnblogs.com/ppllxx-9G/p/18172498

相关文章

  • swordswoman
    Ispentalmostmywholelifeinthecastlesilentlyasasimplewoman.Inthedailylife,Ipretendedtobeabeetandweakoldwoman.However,Ihopedtobecomeaswordswomaninthebottomofmyheart.Inthepast,noonebelievedthatawomancouldbeco......
  • OKR实施后公司的显著变化与提升
    自从我司全面推行OKR(Objectives and Key Results,目标与关键成果)管理模式以来,企业的运营效率、团队协作以及战略执行力均实现了显著的优化和提升。首先,在战略执行层面,OKR为我们构建了一条从公司顶层战略到基层执行的清晰路径。通过设定具有挑战性且明确的目标,并配套量化、可衡......
  • CF1200E Compress Words 题解
    题目链接:CF或者洛谷注意到总字符串长度不超过\(1e6\),对于两个串之间找前后缀匹配,只要能暴力枚举长度,\(check\为\O(1)\),那么最后显然线性复杂度。可以考虑\(kmp\),也可以考虑字符串哈希,最好上双哈希,然后拼串显然是在尾部继续添加新的前缀哈希,这个需要添加的串可以单独由匹配......
  • 单词 Play on Words
    原题链接题解我们将一个单词的首字母和尾字母看成两个结点,每个单词代表一条有向边。此时题意为:给你一个有向图,让你找到一条路径,使得仅仅只经过每条边一次。那么题意就是让我们求一个有向图的欧拉回路。code #include<bits/stdc++.h>usingnamespacestd;intfather[30]......
  • P3435 [POI2006] OKR-Periods of Words
    原题链接题解1.Q是S的前缀2.Q!=S3.S是QQ的前缀,且S可以等于QQ4.从S中挖掉Q后剩下的部分与Q(s)的前半部分重合,也就是公共前后缀5.要让Q尽可能长,就要让公共前后缀尽可能短(非零)细节请看代码解答一些疑惑:为什么不能直接求最短公共前后缀,而是要先求最大公共前后缀?code#include<b......
  • 如何召开一次创意十足的OKR头脑风暴会?
    召开一次创意十足的OKR(ObjectivesandKeyResults,目标与关键成果)头脑风暴会,是激发团队成员智慧、明确共同目标并落实关键行动的重要环节。下面将详细列举召开此类头脑风暴会的具体步骤,以确保会议达到预期效果。一、前期准备确定会议目标与主题:明确本次OKR头脑风暴会的核心目标......
  • Elasticsearch 8.x以上实现初始化用户密码,elasticsearch-setup-passwords interactive
    Elasticsearch8.x以上,默认自动开启x-pack验证,在首次启动时,会设置密码,当再次执行elasticsearch-setup-passwordsinteractive就会报错,提示使用elasticsearch-reset-passwords,但是用户太多,还是想要能像8.x以下一直敲回车,设置密码。今天偶然Elasticsearch报错,发现一个方法可以使用,......
  • OKR与KPI(关键绩效指标)有何不同?如何结合使用?
    在现代企业管理中,绩效考核是确保组织目标得以实现的重要手段。其中,OKR(ObjectivesandKeyResults,目标与关键成果)和KPI(KeyPerformanceIndicators,关键绩效指标)是两种常用的绩效管理工具。虽然它们都是为了提升组织绩效而设计的,但在理念、操作方式和应用场景上却存在着明显的不同......
  • OKR如何与组织的整体战略和计划相结合?
    OKR(ObjectivesandKeyResults,目标与关键成果)作为一种流行的目标管理方法,正逐渐成为组织实现战略目标的重要手段。本文将探讨OKR如何与组织的整体战略和计划相结合,从而推动组织的持续发展。首先,我们需要明确OKR与整体战略和计划之间的关系。整体战略是组织长期发展的指导方针,它......
  • 如何确保OKR既具有挑战性又实际可行?
    在目标管理的世界里,OKR(ObjectivesandKeyResults)作为一种高效的目标设定和跟踪工具,已经越来越受到企业的青睐。然而,制定既具有挑战性又实际可行的OKR并非易事。本文将探讨如何确保OKR既具有挑战性又实际可行,以助力企业实现更好的业绩和团队发展。首先,明确挑战性与可行性的关系......