题目为中文,因而不再解释题意。

首先遵循如下设定可以有以下几个结论:
1,首先谈论下KMP的一个特殊性质:对于某一个特立独行的字符串:例如ABCDEF,在建立有限状态自动机之后,都会有,所有元素的失配边,指向0,也就是初始的那个元素。此时我们可以讲这个独立的元素及之前字符串理解为“ 一个循环次数为1的循环串 ”。对于其他情况,形如:ABCDEFGAB,可以将ABCDEFG理解为一个循环串,AB为下一个循环的两个多余元素,因此,我们可以把任意字符串看成“ 一个循环串+若干独立元素 ”的巧妙形式。

2,对于该形式,都可以发现,对于第K号元素最小循环节的尺寸应当为“ K-F[K] ”(随着规约不同增减1,此处采用刘汝佳蓝书中KMP的规约),那么,我们可以在这个基础上求出来“最小循环节”循环的次数——K/(K-F[K])。

3,应当认为,任意一个串,都构成(AB)*N+A的的形式。区别仅仅在于N的取值

4,应当认为,任何一个循环串,形如(A+B)*N,都自然的可以被认为是(A+B+A+B)*N+(A+B)*k的形式,即可以将若干个相同的循环节看成一个大的循环节。

5,前文中,我们知道了,“如何求出循环串的最小循环节”,以及“最小循环节的长度”,从而可以求出“最小循环节出现的次数”。则对于给定目标m来说,很容易求出,满足有且仅有M个大循环节时,每个大循环节的 “  最小循环体数量    ”,同时,也可以求出来,在满足上述条件后,“ 剩余的循环体数量 ”容易理解,在任何情况下,剩余的循环体数量大于最小循环体数量则构成一个新的循环,意味着M+1明显不符合题设,应当直接排出。

回过头来发现刘汝佳蓝书第一道练习例题就讲的是这个233333333333

放AC代码如下:

#include<bits/stdc++.h>
using namespace std; const long long MAXN=; char tar[MAXN];
long long f[MAXN]; long long n,m;
void init()
{
cin>>n>>m;
cin>>tar; f[]=;f[]=;
for(int i=;i<n;++i)
{
int j=f[i];
while(j&&tar[i]!=tar[j])j=f[j];
f[i+]= tar[i]==tar[j]? j+:;
}
} int main()
{
cin.sync_with_stdio(false);
init();
for(int i=;i<=n;++i)
{
int val=i/(i-f[i]);
if(i%(i-f[i]))
{
if(val/m>val%m)cout<<;
else cout<<;
}else
{
if(val/m>=val%m)cout<<;
else cout<<;
}
} return ;
}

51nod 1554 KMP思维题的更多相关文章

  1. 51Nod 1277 字符串中的最大值(KMP,裸题)

    1277 字符串中的最大值 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 一个字符串的前缀是指包含该字符第一个字母的连续子串,例如: ...

  2. zstu.4194: 字符串匹配(kmp入门题&& 心得)

    4194: 字符串匹配 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 206  Solved: 78 Description 给你两个字符串A,B,请 ...

  3. zoj 3778 Talented Chef(思维题)

    题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...

  4. hdu 4763 Theme Section(KMP水题)

    Theme Section Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  5. cf A. Inna and Pink Pony(思维题)

    题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...

  6. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  7. HDU 1711 Number Sequence(KMP裸题,板子题,有坑点)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)

    思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...

  9. C. Nice Garland Codeforces Round #535 (Div. 3) 思维题

    C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

随机推荐

  1. postgresql安装,java简单使用postgresql

    一 整合 由于本人的学过的技术太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的github项目地址 https://github.com/247292980/spri ...

  2. 面试(Java之IO与NIO)

    一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...

  3. springmvc之Hello World及常用注解

    步骤: 加入jar包 在web.xml 中配置DispacherServlet 加入SpringMVC 配置文件springmvc.xml 编写请求处理器(action/controller) 编写视 ...

  4. ajax 的dataType

    这个问题已经碰到过好几次,经常自己挖坑,自己跳,而且还老是犯同样的错.一直纠结 明明其他地方得到的数据格式是对的.为什么这里就是不行.就是自己有洁癖去掉了  dataType:"json&q ...

  5. js学习的一些想法(有一些来自网络)

    javascript开发最佳实践学习 1.给变量和函数命名--变量名和函数名尽量简短 好的变量命名应该是简短易懂的,还有需要避免的陷阱就是在命名中将数值与功能结合. 匈牙利命名法就是一个不错的选择,也 ...

  6. React 官网列子学习

    一个有状态的组件 除了接受输入数据(通过 this.props ),组件还可以保持内部状态数据(通过this.state ).当一个组件的状态数据的变化,展现的标记将被重新调用render() 更新. ...

  7. IUserStore------Implements Diagram

  8. 如何在SAP Cloud for Customer自定义BO中创建访问控制

    文章作者: Yi 已获得Yi的转载许可. 访问控制方式和使用注意事项 1. C4C中的访问控制有两种方式 RelevantForAccessControl AccessControlContext 2 ...

  9. CentOS替换系统自带JDK

    1.解压jdk安装包到/opt 下 /opt/jdk1.8.0_181 2.编辑/etc/profile, 增加如下内容 export JAVA_HOME=/opt/jdk1.8.0_181expor ...

  10. java菜鸟的Python学习之路(1)

    学习一门新的语言,应当抓住语言的共有特性,这样容易触类旁通,学习起来也十分的快捷愉悦 而语言的特性大约有以下元素 变量定义与类型 算术符号与逻辑符号 for 循环与 while 循环 数组,线性表等一 ...