Milking Grid
Time Limit: 3000MS   Memory Limit: 65536K
Total Submissions: 8314   Accepted: 3586

Description

Every morning when they are milked, the Farmer John's cows form a rectangular grid that is R (1 <= R <= 10,000) rows by C (1 <= C <= 75) columns. As we all know, Farmer John is quite the expert on cow behavior, and is currently writing a book about feeding behavior in cows. He notices that if each cow is labeled with an uppercase letter indicating its breed, the two-dimensional pattern formed by his cows during milking sometimes seems to be made from smaller repeating rectangular patterns.

Help FJ find the rectangular unit of smallest area that can be repetitively tiled to make up the entire milking grid. Note that the dimensions of the small rectangular unit do not necessarily need to divide evenly the dimensions of the entire milking grid, as indicated in the sample input below.

Input

* Line 1: Two space-separated integers: R and C

* Lines 2..R+1: The grid that the cows form, with an uppercase letter denoting each cow's breed. Each of the R input lines has C characters with no space or other intervening character.

Output

* Line 1: The area of the smallest unit from which the grid is formed 

Sample Input

2 5
ABABA
ABABA

Sample Output

2

Hint

The entire milking grid can be constructed from repetitions of the pattern 'AB'.

Source

 
 
思路:
  每一列都给hash成一个值,然后横着kmp,找到最小循环节长度l1;
  每一行都给hash成一个值,然后竖着kmp,找到最小循环节长度l2;
  然后输出l1*l2;
  劳资re十多次,才发现题目里面是多组数据;
  然后又re十多次,看discuss才知道r和c的范围弄反了;
  气人简直、、、
 
 
来,上代码:

#include <cstdio>
#include <cstring>
#include <iostream> #define che 39
#define mod 100000009LL
#define mod1 100000007LL
#define mod2 13000007LL using namespace std; int next[],next_[],r,c,ans; long long t[],p[]; char ch[]; int main()
{
while(scanf("%d%d",&r,&c)==)
{
memset(t,,sizeof(t));
memset(p,,sizeof(p));
memset(next,,sizeof(next));
memset(next_,,sizeof(next_));
for(int i=;i<=r;i++)
{
cin>>ch;
for(int j=;j<c;j++)
{
t[j+]=((t[j+]*che)%mod+((ch[j]-'')*che))%mod1;
p[i]=((p[i]*che)%mod+((ch[j]-'')*che))%mod2;
}
}
int i=,j=;next[]=-;
while(j<=c)
{
if(i==||t[i]==t[j]) next[j++]=i++;
else i=next[i-]+;
}
i=,j=,next_[]=-;
while(j<=r)
{
if(i==||p[i]==p[j]) next_[j++]=i++;
else i=next_[i-]+;
}
ans=(c-next[c])*(r-next_[r]);
cout<<ans;
putchar('\n');
}
return ;
}

AC日记——Milking Grid poj 2185的更多相关文章

  1. Milking Grid POJ - 2185 || 最小覆盖子串

    Milking Grid POJ - 2185 最小覆盖子串: 最小覆盖子串(串尾多一小段时,用前缀覆盖)长度为n-next[n](n-pre[n]),n为串长. 当n%(n-next[n])==0时 ...

  2. AC日记——K-th Number poj 2104

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 52348   Accepted: 17985 Ca ...

  3. AC日记——Housewife Wind poj 2763

    Language: Default Housewife Wind Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 10525 ...

  4. AC日记——Sliding Window poj 2823

    2823 思路: 单调队列: 以前遇到都是用线段树水过: 现在为了优化dp不得不学习单调队列了: 代码: #include <cstdio> #include <cstring> ...

  5. Milking Grid poj2185

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

  6. poj 2185 Milking Grid

    Milking Grid http://poj.org/problem?id=2185 Time Limit: 3000MS   Memory Limit: 65536K       Descript ...

  7. POJ 2185 Milking Grid [二维KMP next数组]

    传送门 直接转田神的了: Milking Grid Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 6665   Accept ...

  8. [poj 2185] Milking Grid 解题报告(KMP+最小循环节)

    题目链接:http://poj.org/problem?id=2185 题目: Description Every morning when they are milked, the Farmer J ...

  9. POJ 2185 Milking Grid KMP循环节周期

    题目来源:id=2185" target="_blank">POJ 2185 Milking Grid 题意:至少要多少大的子矩阵 能够覆盖全图 比如例子 能够用一 ...

随机推荐

  1. jQuery发送ajax请求实现跨域访问

    Java代码的话,在返回响应之前调用如下代码中的allowCrossDomainAccess()方法: /** * 允许跨域访问 */ public void allowCrossDomainAcce ...

  2. 【linux】【rpm】确定程序是否 rpm 安装

    执行 rpm -qf 文件名如果结果显示出安装包那就说明是rpm (或者yum)安装 详情参看 rpm -v  (或者 man rpm) ​

  3. GoF23种设计模式之行为型模式之解释器模式

    一.概述         给定一种语言和其文法的一种表示,再定义一个解释器,该解释器使用表示来解释语言中的句子. 二.适用性              当需要解释一种语言,并且可以将该语言中的句子表示 ...

  4. POJ:3160-Father Christmas flymouse

    Father Christmas flymouse Time Limit: 1000MS Memory Limit: 131072K Description After retirement as c ...

  5. 线段树、前缀数组:HDU1591-Color the ball(区间更新、简单题)

    Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. 数学基础:HUD1406-完数

    完数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Descript ...

  7. winServer08上安装SQL时提示“必须使用管理角色安装”或配置microsoft.net framework 3.5

    server 2008安装vs2008后报错,如图: 解决方法: 控制面板—>程序—>打开或关闭Windows功能—>进入服务器管理器选择功能—>添加功能 然后勾选.NET F ...

  8. Java学习笔记2---设置环境变量JAVA_HOME,CLASSPATH,PATH

    1.环境变量包括: JAVA_HOME,CLASSPATH,PATH 2.设置环境变量的目的: 路径搜索,方便查找到jdk的安装路径.方便搜索用到的类文件.方便搜索用到的可执行文件如java,java ...

  9. Leetcode 433.最小基因变化

    最小基因变化 一条基因序列由一个带有8个字符的字符串表示,其中每个字符都属于 "A", "C", "G", "T"中的任 ...

  10. 面试问题整理Andorid版本 date: 2017-1-12 21:14:36 categories: 技术

    Acitivty的四中启动模式与特点. standard:默认的启动模式 singleTop:适合那种接受通知启动的页面,比如新闻客户端之类的,可能会给你推送好几次 ,但是每次都是打开同一张页面调用o ...