codevs 最佳落点(模拟)

时间:2023-03-08 18:41:26
/*
这题并没有A掉 自己电脑上运行ok提交就不对
预处理攻击范围 然后模拟
求大神看看有没有错误
Orz
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
ll g[][],ans=-;
int n,m,f[][],px,py;
char s;
ll F(int x,int y)
{
ll sum=;
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
{
int nx=px+i-x;
int ny=py+j-y;
if(nx<=n&&nx>&&ny<=m&&ny>&&f[nx][ny]==)sum+=g[i][j];
}
return sum;
}
int main()
{
int x=,y=,o=;
memset(f,-,sizeof(f));
x++;
while()
{
s=getchar();y++;
if(s=='.')f[x][y]=;
px=max(px,x);py=max(py,y);
if(s=='\n')o++,y=;
if(o%==&&o!=&&s=='\n')x++,y=;
if(s>=''&&s<='')break;
}
int p=;
while(s>=''&&s<='')
{
p=p*+s-'';s=getchar();
}
n=p;
px=(px+)/;py=(py+)/;
cin>>m;
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
cin>>g[i][j];
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
ans=max(ans,F(i,j));
printf("%lld\n",ans);
return ;
}