标签:des style color os io strong ar for div
Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 6317 | Accepted: 2648 |
Description
Input
Output
Sample Input
2 5 ABABA ABABA
Sample Output
2
#include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <string> #include <algorithm> #include <queue> using namespace std; const int maxn = 10000+10; const int maxm = 80; char mat[maxn][maxm]; char revmat[maxm][maxn]; int r,c; int P[maxn],F[maxn]; int gcd(int a,int b) { if(b==0) return a; else return gcd(b,a%b); } void getP() { P[1] = P[0] = 0; for(int i = 1; i < r; i++) { int j = P[i]; while(j && strcmp(mat[i],mat[j])) j = P[j]; if(strcmp(mat[i],mat[j])==0) P[i+1] = j+1; else P[i+1] = 0; } } void getF() { F[1] = F[0] = 0; for(int i = 1; i < c; i++) { int j = F[i]; while(j && strcmp(revmat[i],revmat[j])) j = F[j]; if(strcmp(revmat[i],revmat[j])==0) F[i+1] = j+1; else F[i+1] = 0; } } void getRev() { for(int i = 0; i < c; i++) { for(int j = 0; j < r; j++) { revmat[i][j] = mat[j][i]; } } } void solve() { int L = r-P[r],R = c - F[c]; printf("%d\n",L*R); } int main(){ while(~scanf("%d%d",&r,&c)){ for(int i = 0; i < r; i++) scanf("%s",mat[i]); getP(); getRev(); getF(); solve(); } return 0; }
POJ2185-Milking Grid(KMP,next数组的应用)
标签:des style color os io strong ar for div
原文地址:http://blog.csdn.net/mowayao/article/details/38983747