上交oj 1002 二哥的花生 (待解决)

来源:互联网 发布:json rpc python 编辑:程序博客网 时间:2024/04/27 22:51

这到底没做出来。。。。第一次以为穷举就可以,结果完蛋了,超时,又想出来了一个巧方法,结果总是wa。。。无语


http://acm.sjtu.edu.cn/OnlineJudge/problem/1002

贴出代码来看看,以后解决


#include <iostream>using namespace std;int a[1010][1010];int sum[1010][1010];int main(){int L,W;cin>>L>>W;for(int i=0;i<L;i++)for(int j=0;j<W;j++)cin>>a[i][j];int l,w,m=0;cin>>l>>w;sum[0][0]=0;for(int i=0;i<L-l+1;i++)for(int j=0;j<W-w+1;j++){if(i==0&&j==0){for(int x=i;x-i<l;x++)for(int y=j;y-j<w;y++)sum[i][j]+=a[x][y];if(m<sum[i][j]) m=sum[i][j];}else if(j==0){sum[i][j]=sum[i-1][j];for(int y=0;y<l;y++){sum[i][j]-=a[i-1][y];sum[i][j]+=a[i+l-1][y];}if(m<sum[i][j]) m=sum[i][j];}else {sum[i][j]=sum[i][j-1];for(int x=i;x<i+w;x++){sum[i][j]-=a[x][j-1];sum[i][j]+=a[x][j+w-1];}if(m<sum[i][j]) m=sum[i][j];}}/*for(int i=0;i<L;i++){for(int j=0;j<W;j++)cout<<sum[i][j]<<" ";cout<<endl;}*/cout<<m<<endl;return 0;}