codevs 最佳落点(模拟)
Posted 一入OI深似海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codevs 最佳落点(模拟)相关的知识,希望对你有一定的参考价值。
/* 这题并没有A掉 自己电脑上运行ok提交就不对 预处理攻击范围 然后模拟 求大神看看有没有错误 Orz */ #include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; ll g[25][25],ans=-10000000; int n,m,f[125][125],px,py; char s; ll F(int x,int y) { ll sum=0; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) { int nx=px+i-x; int ny=py+j-y; if(nx<=n&&nx>0&&ny<=m&&ny>0&&f[nx][ny]==1)sum+=g[i][j]; } return sum; } int main() { int x=0,y=0,o=0; memset(f,-1,sizeof(f)); x++; while(1) { s=getchar();y++; if(s==‘.‘)f[x][y]=1; px=max(px,x);py=max(py,y); if(s==‘\n‘)o++,y=0; if(o%2==0&&o!=0&&s==‘\n‘)x++,y=0; if(s>=‘0‘&&s<=‘9‘)break; } int p=0; while(s>=‘0‘&&s<=‘9‘) { p=p*10+s-‘0‘;s=getchar(); } n=p; px=(px+1)/2;py=(py+1)/2; cin>>m; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>g[i][j]; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) ans=max(ans,F(i,j)); printf("%lld\n",ans); return 0; }
以上是关于codevs 最佳落点(模拟)的主要内容,如果未能解决你的问题,请参考以下文章