题目链接:http://poj.org/problem?id=2185

这道题我看了好久,最后是通过参考kuangbin的博客才写出来的

感觉next数组的应用自己还是掌握的不够深入

这道题其实就是先对于每一行字符串计算next数组(就是把每一行的字符串当作单个字符啦),最后n-next[n]即为n行字符串的最小重复单元

然后对于每一列字符串计算next数组,最后m-len[m]即为m列的最小重复单元

由于答案是求最小覆盖单元的面积

所以答案即为(n-len[n])*(m-len(m));

感觉很妙啊!!!

代码如下:

 #include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
int n,m;
int f[];
char s[][];
bool Is_same_cow(int i,int j)
{
for(int kk=;kk<m;kk++)
if(s[i][kk]!=s[j][kk]) return false;
return true; }
bool Is_same_row(int i,int j)
{
for(int kk=;kk<n;kk++)
if(s[kk][i]!=s[kk][j]) return false;
return true;
} int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<n;i++) scanf("%s",s[i]);
int i,j=,k=-;
f[]=-;
while(j<n)
{
if(k==-|| Is_same_cow(j,k))
{
j++;k++;
f[j]=k;
}
else k=f[k];
}
int ans1=n-f[n];
j=,k=-;
f[]=-;
while(j<m)
{
if(k==-|| Is_same_row(j,k))
{
j++;k++;
f[j]=k;
}
else k=f[k]; }
int ans2=m-f[m];
cout<<ans1*ans2<<endl; }
return ;
}

poj2185 Milking Grid的更多相关文章

  1. poj2185 Milking Grid【KMP】

    Milking Grid Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 10084   Accepted: 4371 Des ...

  2. POJ2185 Milking Grid 【lcm】【KMP】

    Description Every morning when they are milked, the Farmer John's cows form a rectangular grid that ...

  3. 【kmp算法】poj2185 Milking Grid

    先对每行求出所有可能的循环节长度(不需要整除). 然后取在所有行中都出现了的,且最小的长度为宽. 然后将每一行看作字符,对所有行求next数组,将n-next[n](对这些行来说最小的循环节长度)作为 ...

  4. [USACO2003][poj2185]Milking Grid(kmp的next的应用)

    题目:http://poj.org/problem?id=2185 题意:就是要求一个字符矩阵的最小覆盖矩阵,可以在末尾不完全重合(即在末尾只要求最小覆盖矩阵的前缀覆盖剩余的尾部就行了) 分析: 先看 ...

  5. POJ2185 Milking Grid KMP两次(二维KMP)较难

    http://poj.org/problem?id=2185   大概算是我学KMP简单题以来最废脑子的KMP题目了 , 当然细节并不是那么多 , 还是码起来很舒服的 , 题目中描写的平铺是那种瓷砖一 ...

  6. POJ2185 Milking Grid 题解 KMP算法

    题目链接:http://poj.org/problem?id=2185 题目大意:求一个二维的字符串矩阵的最小覆盖子矩阵,即这个最小覆盖子矩阵在二维空间上不断翻倍后能覆盖原始矩阵. 题目分析:next ...

  7. 【POJ2185】【KMP + HASH】Milking Grid

    Description Every morning when they are milked, the Farmer John's cows form a rectangular grid that ...

  8. Milking Grid poj2185

    Milking Grid POJ - 2185 时限: 3000MS   内存: 65536KB   64位IO格式: %I64d & %I64u 提交 状态 已开启划词翻译 问题描述 Eve ...

  9. [poj2185]Milking Grid_KMP

    Milking Grid poj-2185 题目大意:给出一个字符矩阵,求最小覆盖矩阵(可以残余). 注释:$1\le R\le 10^5$,$1\le C \le 75$ 想法:和bzoj1355不 ...

随机推荐

  1. canvas 3D雪花效果

    <!DOCTYPE html> <html style="height: 100%;"> <head> <meta charset=&qu ...

  2. Windows:将cmd命令行添加到右键中方法

    win10中将命令行cmd添加到右键的方法 Windows cmd 右键 win10 命令行 最近在学python,所以会用到很多库文件,但是有的库文件需要下载whl文件再通过cmd进行安装,所以每次 ...

  3. SEQ序号与ACK序号理解总结

    备查 SEQ序号与ACK序号理解总结

  4. vue过渡和animate.css结合使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. vuejs模板使用方法

    vuejs的模板功能很强大,下面是一些demo <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. Vue.use自定义自己的全局组件

    通常我们在vue里面使用别人开发的组件,第一步就是install,第二步在main.js里面引入,第三步Vue.use这个组件.今天我简单的也来use一个自己的组件. 这里我用的webpack-sim ...

  7. GNU/Linux与开源文化的那些人和事

     一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图灵(Alan Mathison Tur ...

  8. get_category_recommend_goods的正确使用

    get_category_recommend_goods($type = '', $cats = '', $brand = 0, $min =0,  $max = 0, $ext='') 位于lib_ ...

  9. 手机自动化测试:Appium源码分析之跟踪代码分析六

    手机自动化测试:Appium源码分析之跟踪代码分析六   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest推出手机自 ...

  10. .net mvc------下拉列表DropDownList控件------绑定数据

    下拉列表 以性别为例 绑定可以了,可以显示了,但有些地方就能传值,有些地方就会出错提示,如有大神请指教.... 错误如下: 具有键"sex"的 ViewData 项属于类型&quo ...