| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
郁闷,A不了啊,一直WA,为什么啊/*
*代表1
0代表0
*/
#include <iostream>
#include <memory.h>
using namespace std;
typedef long long VeryLONG;
int map[1001][1001],T,N,M,P,Q,last;
VeryLONG mainmatrix[1001][1001];
VeryLONG submatrix[101][51];
VeryLONG EXP2[52],ans;
bool ok[101];
int main()
{
EXP2[0]=1;
for (int i=1;i<=51;i++) EXP2[i]=2*EXP2[i-1];
int tt=0;
while (scanf("%d%d%d%d%d",&N,&M,&T,&P,&Q) && N>0)
{
tt++;
ans=0;
memset(map,0,sizeof(map));
memset(mainmatrix,0,sizeof(mainmatrix));
memset(submatrix,0,sizeof(submatrix));
char lines[1002];
gets(lines);
VeryLONG tmp;
for (int i=1;i<=N;i++)
{
gets(lines);
for (int j=1;j<=M;j++)
if (lines[j-1]=='*') map[i][j]=1;
else map[i][j]=0;
}
for (int i=1;i<=N;i++)
{
tmp=0;
for (int j=1;j<=M;j++)
{
tmp=tmp*2+map[i][j];
if (j>=Q)
{
tmp-=map[i][j-Q]*EXP2[Q];
mainmatrix[i][j]=tmp;
}
}
}
for (int i=1;i<=T;i++)
{
gets(lines);
for (int j=1;j<=P;j++)
{
gets(lines);
tmp=0;
for (int k=1;k<=Q;k++)
if (lines[k-1]=='*') tmp=tmp*2+1;
else tmp=tmp*2;
submatrix[i][j]=tmp;
}
}
for (int i=1;i<=N-P+1;i++)
for (int j=Q;j<=M;j++)
{
memset(ok,true,sizeof(ok));
last=1;
for (int row=1;row<=P && last>0;row++)
{
last=0;
for (int k=1;k<=T;k++)
if (ok[k] && submatrix[k][row]==mainmatrix[i+row-1][j])
last++;
else ok[k]=false;
}
ans+=last;
}
printf("Case %d: %d\n",tt,ans);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator