这个算法本身就不难。

poj1961

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; char ss[];
int p[];
int main()
{
int n,T_T=;
while(scanf("%d",&n)!=EOF)
{
if(n==)break;
printf("Test case #%d\n",++T_T); scanf("%s",ss+);
p[]=;int j=;
for(int i=;i<=n;i++)
{
while(j>&&ss[i]!=ss[j+])j=p[j];
if(ss[i]==ss[j+])j++;
p[i]=j;
}
for(int i=;i<=n;i++)
if(i%(i-p[i])==&&(i/(i-p[i]))>)printf("%d %d\n",i,i/(i-p[i]));
printf("\n");
}
return ;
}

poj1961

最小表示法裸题:bzoj1398

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; int len;
char s[][];
int getmin(int w)
{
for(int i=;i<=len;i++)s[w][i+len]=s[w][i]; int i=,j=;
while(i<=len&&j<=len)
{
int k=;
while(k<=len&&s[w][i+k]==s[w][j+k])k++;
if(k==len)break; if(s[w][i+k]>s[w][j+k])
{
i=i+k+;
if(i==j)i++;
}
else
{
j=j+k+;
if(j==i)j++;
}
}
return min(i,j);
}
int main()
{
scanf("%s",s[]+);len=strlen(s[]+);
scanf("%s",s[]+);
if(len!=strlen(s[]+)){printf("No\n");return ;} int be0=getmin();
int be1=getmin(); bool bk=true;
for(int i=;i<=len;i++)
{
if(s[][be0]!=s[][be1]){bk=false;break;}
be0++;if(be0==len+)be0=;
be1++;if(be1==len+)be1=;
}
if(bk==false)printf("No\n");
else
{
printf("Yes\n");
for(int i=;i<=len;i++)
{
printf("%c",s[][be0]);
be0++;if(be0==len+)be0=;
}
printf("\n");
}
return ;
}

bzoj1398

0x15 KMP的更多相关文章

  1. 0x18 总结与练习

    这一章不太满意啊.. 还是有点痛苦,但就是做的挺慢啊... 1.就是例题 2.括号画家 感觉这种提高组类型的细节题都没什么信心啊,fail了几次才A #include<cstdio> #i ...

  2. KMP算法求解

    // KMP.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using namespac ...

  3. 简单有效的kmp算法

    以前看过kmp算法,当时接触后总感觉好深奥啊,抱着数据结构的数啃了一中午,最终才大致看懂,后来提起kmp也只剩下“奥,它是做模式匹配的”这点干货.最近有空,翻出来算法导论看看,原来就是这么简单(先不说 ...

  4. KMP算法

    KMP算法是字符串模式匹配当中最经典的算法,原来大二学数据结构的有讲,但是当时只是记住了原理,但不知道代码实现,今天终于是完成了KMP的代码实现.原理KMP的原理其实很简单,给定一个字符串和一个模式串 ...

  5. 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)

    前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成"* ...

  6. [KMP]【学习笔记】

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 36916   Accepted: 14904 Descript ...

  7. KMP算法实现

    链接:http://blog.csdn.net/joylnwang/article/details/6778316 KMP算法是一种很经典的字符串匹配算法,链接中的讲解已经是很明确得了,自己按照其讲解 ...

  8. KMP专题

    1.[HDU 3336]Count the string(KMP+dp) 题意:求给定字符串含前缀的数量,如输入字符串abab,前缀是a.ab.aba.abab,在原字符串中出现的次数分别是2.2.1 ...

  9. KMP学习之旅

    说起kmp就要从字符串的匹配说起,下面我们谈谈字符串的匹配 给定一个原字符串:bababababababababb,再给定一个模式串:bababb,求模式串是否在源字符串中出现 最简单的方法就是遍历源 ...

随机推荐

  1. HDU2080 夹角有多大2

    2019-05-17 15:00:09 加油加油,fightting !!! 这道题不知道acos()函数,acos()返回的是弧度,转化成度数要 / PI * 180 也没有想到通过向量 但是想到了 ...

  2. 树莓派-基于aria2实现离线下载

    安装aria2 aria2是linux下的一个下载工具,它支持http.bt种子.磁力链接三种方式下载 sudo apt-get install aria2 配置aria2 aria2支持命令参数,也 ...

  3. 利用JavaScript的if语句判断元素显示隐藏

    <html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...

  4. javascript学习中自己对作用域和作用域链理解

    在javascript学习中作用域和作用域链还是相对难理解些,下面我关于javascript作用域和作用域链做一下详细介绍,给各位初学者答疑解惑. 首先我们介绍一下什么是作用域?  从字面上理解就是起 ...

  5. SQL数据库链接代码的解释

    SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=(local);Initial ...

  6. css3动画,点击圆形背景扩展整个页面效果

    上次做项目的时候,要求点击链接,这个链接的圆形背景扩散充满整个页面,今天把这个效果整理一下,是简单的css3的动画特效,粘贴下面的代码看效果 <!DOCTYPE html> <htm ...

  7. JavaScript创建对象的几种 方式

    //JavaScript创建对象的七种方式 //https://xxxgitone.github.io/2017/06/10/JavaScript%E5%88%9B%E5%BB%BA%E5%AF%B9 ...

  8. 熟悉VS2017 和Github 第二次作业

    GIT地址 https://github.com/Astone1213 GIT用户名  Astone1213 学号后五位  62114 博客地址 https://www.cnblogs.com/AsL ...

  9. Centos 7 安装图形化界面

    Centos 7 默认是没有图形化界面的,但我们很多人在习惯了 Windows 的图形化界面之后,总是希望有一个图形化界面从而方便我们使用,这里介绍一下 CentOS7安装图形化桌面系统的方法. 一. ...

  10. JS 写<ul><li>

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...