》》点击进入原题测试《《

思路:好久不见,今天要开始真正写题了。这个题之前我的理解有点问题,导致写了很久最终都是一直都只能过样例。需要注意的是输出中每一个“1”都是和别的输出相互独立的,比如输入以下样例

输入样例:

abababab
输出样例:

在输出字符串当中每一个“1”都代表原字符串中该位置以前包括该位置的字符都是满足题目要求的ABAB或ABABA类型。

刚开始没有理解好以上,导致我错误的理解是既然都能找到既然都是ABABA类型了,那肯定也是前缀也是ABAB,那我只需要找前缀为ABAB类型的就行啊。所以,而且我之前的输出一直都是前面一直为0后段一直为1。所以说样例也是有点坑,完全符合我了错误的思路。

写给自己看的

以下内容参照了这里 》》LuYouQi233《《

这里用到了KMP算法当中的next数组,我们用S来表示一个循环节(比如字符串abababab中,ab是一个循环节S),在next数组中的值除了表示最长相等前后缀以外,在这个题目中还能表示有多少个AB;当有空字符串的时候我们用ABAB来代表这个字符串,否则用ABABA。

num = (i+1)/(i-next[i])表示当前字符串中有多少个AB;num/k 表示当前AB中有多少个S;num%k 表示当前的A中有多少个S;

1)当(i+1)%(i-next[i])==0时,既当前字符串的类型是ABAB型;所以num/k大于等于num%k既满足条件输出1;

2)当(i+1)%(i-next[i])!=0时。既当前的字符串类型是ABABA型;所以需要num/k大于num%k既满足条件输出1;

那么问题来了,为什么一个是大于等于一个是等于呢??因为第一种情况是B可能是空的,而第二种情况A或B都不能为空。

#include<cstdio>
#include<iostream>
using namespace std;
int nextt[];
char s[];
void cal_next(char str[],int len)
{
nextt[] = -;
int k = -;
for (int i = ; i < len; i++){
while (k > - && str[k + ] != str[i])
k = nextt[k]; if (str[k + ] == str[i])
k += ; nextt[i] = k;
}
}
int main()
{
int n, k; cin >> n >> k;
getchar();
for (int i = ; i < n; i++){
s[i] = getchar();
}
cal_next(s, n); for (int i = ; i < n; i++){
int num = (i + ) / (i - nextt[i]);
if ((i+) % (i - nextt[i])==){
if (num / k >= num%k)
cout << "";
else cout << "";
}else{
if (num / k > num%k)
cout << "";
else cout << "";
}
} return ;
}
												

51NOD欧姆诺姆和项链——KMP算法(非水题)的更多相关文章

  1. 51Nod 1554 欧姆诺姆和项链 (KMP)

    题意:中文题. 析:首先要使用KMP的失配函数 f ,对于长度为 i 的串,如果存在循环节那么  i % (i-f[i]) == 0,循环节的长度就是 i - f[i] ,当然次数就是 i / (i- ...

  2. 51nod 1554:欧姆诺姆和项链——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1554 题目: 有一天,欧姆诺姆发现了一串长度为n的宝石串,上面有五颜六色 ...

  3. 51nod 1554 欧姆诺姆和项链

    有一天,欧姆诺姆发现了一串长度为n的宝石串,上面有五颜六色的宝石.他决定摘取前面若干个宝石来做成一个漂亮的项链. 他对漂亮的项链是这样定义的,现在有一条项链S,当S=A+B+A+B+A+...+A+B ...

  4. 51NOD 1554 欧姆诺姆和项链 巧妙利用KMP

    请戳这里! #include<cstdio> #define N 1000100 char s[N]; int n,k,nxt[N],ans[N]; int main() { scanf( ...

  5. [codeforces] 526D [51nod] 1554 欧姆诺姆和项链

    原题 KMP 方法一: 听说是ex-kmp--来自学姐 ex-kmp是处理两个串s和t之间,t的每一个后缀在s中的最长前缀的长度的一个算法. 它很像manacher(至少我和学姐这么认为),记录了一个 ...

  6. 51nod 1548 欧姆诺姆和糖果 (制约关系优化枚举)

    1548 欧姆诺姆和糖果 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一天,欧姆诺诺姆来到了朋友家里,他发现了 ...

  7. 51nod——1548 欧姆诺姆和糖果

    一开始以为是贪心,然后发现没法贪.暴力枚举肯定T,于是用约束关系优化: 假设wr >= wb, 第一种情况:wr >= sqrt (c), 则此时最多吃c / wr个r,且c / wr & ...

  8. 51nod1548 欧姆诺姆和糖果

    思路: 只有兩種糖果,枚舉其中一種糖果的數量就可以得到一個可行解: 但總有一種糖果的數量是較少的,並且該數量小於sqrt(C): 簡單證明: 1.若有任一糖果的質量大於sqrt(C),則必定有一糖果的 ...

  9. 【BZOJ3781、2038】莫队算法2水题

    [BZOJ3781]小B的询问 题意:有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数 ...

随机推荐

  1. SPOJ OTOCI 动态树 LCT

    SPOJ OTOCI 裸的动态树问题. 回顾一下我们对树的认识. 最初,它是一个连通的无向的无环的图,然后我们发现由一个根出发进行BFS 会出现层次分明的树状图形. 然后根据树的递归和层次性质,我们得 ...

  2. 【Learning】多项式的一些东西

    FFT 坑 NTT 将\(FFT\)中的单位复数根改成原根即可. 卡常版NTT模版 struct Mul { int Len; int wn[N], Lim; int rev[N]; inline v ...

  3. 编写第一Spring程序

    构建Spring项目 通过https://start.spring.io/来构建项目,在这里我选择了两个依赖,web 和 Actuator. 项目结构 通过eclipse导入项目,可以看到这是一个标准 ...

  4. Window对象与DOM

    目前,前端插件数不胜数,比如有移动端滑动特效插件Swiper,下拉刷新的iScroll,弹出框插件layer,还有我们经常使用的JQuery,jquery.mobile等,这些插件能够满足我们日常的基 ...

  5. spring的依赖注入如何降低了耦合

    依赖注入:程序运行过程中,如需另一个对象协作(调用它的方法.访问他的属性时),无须在代码中创建被调用者,而是依赖于外部容器的注入 看过一些比较好的回答 1.一个人(Java实例,调用者)需要一把斧子( ...

  6. 转 awr自动收集脚本

    1. remote get awr report #!/usr/bin/ksh ####sample: sh awr.sh 20170515 20170516 AWR ### default it w ...

  7. 基于Web的Kafka管理器工具之Kafka-manager启动时出现Exception in thread "main" java.lang.UnsupportedClassVersionError错误解决办法(图文详解)

    不多说,直接上干货! 前期博客 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8.0.9和0.10以后版本)(图文详解)   问题详情 我在Kaf ...

  8. mysql timeout expired处理

    一.发现问题 二.分析问题 .net长时间连接mysql导致超时: 方式一:连接用完后,就关闭连接 方式二:增加C#的执行sqlcommand时间 三.解决问题 增加了这一句,问题解决了 using ...

  9. python实现qq机器人qqbot

    title: python实现qq机器人qqbot tags: python date: 2018-6-1 10:19:00 --- 以下内容为转载 一.介绍 qqbot 是一个用 python 实现 ...

  10. Selenium学习第二天,了解Selenium工作模式与学习Selenium需要具备的知识与工具。

    Selenium学习网站: 1.http://www.ltesting.net/ceshi/open/kygncsgj/selenium/2014/0408/207237.html——好像是对API的 ...