题目链接: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. 解决VIM编辑器中文乱码

    追加如下内容到/etc/vimr (或者不同的用户家目录下的.vimrc文件中) set encoding=utf8filetype plugin indent onsyntax on" s ...

  2. Linux系统date命令的参数及获取时间戳的方法

    date指令相关用法示例 date 用法: date [OPTION]... [+FORMAT]date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] ...

  3. 解决Appium 抓取toast

    首先我们先看看这个gif,图中需要,要抓取的字符串--->请输入转让份数 1.要导入java-client-5.0.0-SNAPSHOT.jar 包的地址:链接:http://pan.baidu ...

  4. 【iOS】7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  5. 【Electron】Electron开发入门(六):项目生成setup安装程序

    把electron发布的exe打包成setup安装程序,需要使用nsis软件, nsis打包的详细教程,可以参考我的这篇文章: win7下nsis打包exe安装程序教程

  6. python 爬取w3shcool的JQuery的课程并且保存到本地

    最近在忙于找工作,闲暇之余,也找点爬虫项目练练手,写写代码,知道自己是个菜鸟,但是要多加练习,书山有路勤为径.各位爷有测试坑可以给我介绍个啊,自动化,功能,接口都可以做. 首先呢,我们明确需求,很多同 ...

  7. 老李分享:JVM调优

    老李分享:JVM调优   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨 ...

  8. C#非泛型集合和泛型集合的超级详解

    C# 泛型集合之非泛型集合类与泛型集合类的对应: ArrayList对应List HashTable对应Dictionary Queue对应Queue Stack对应Stack SortedList对 ...

  9. js 模板引擎

    template = document.querySelector('#template').innerHTML, result = document.querySelector('.result') ...

  10. 给指针malloc分配空间后就等于数组吗?【转】

    首先回答你的问题:严格的说不等于数组,但是可以认为它是个数组一样的使用而不产生任何问题. 不过既然这样,那它应该算是个数组吧.所以,一般我们都用“动态数组”这种名字来称呼这种东西. 要讲清楚这个东西, ...