997. [東方S2] 射命丸文

997. [東方S2] 射命丸文

二维前缀和

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define maxn 2333
 4 int n,m,r,c;
 5 int num[maxn][maxn],f[maxn][maxn],ans;
 6 char ch;
 7 inline void read(int &now)
 8 {
 9     ch=getchar(); int f=1; now=0;
10     while(ch>'9'||ch<'0') ch=getchar();
11     while(ch>='0'&&ch<='9') now=now*10+ch-'0',ch=getchar();
12 }
13 int main()
14 {
15     freopen("aya.in","r",stdin);
16     freopen("aya.out","w",stdout);
17     read(n); read(m); read(r); read(c);
18     for(int i=1;i<=n;i++)
19         for(int j=1;j<=m;j++)
20         {
21             read(num[i][j]);
22             f[i][j]=f[i][j-1]+f[i-1][j]+num[i][j]-f[i-1][j-1];
23         }
24     for(int i=r;i<=n;i++)
25         for(int j=c;j<=m;j++)
26             ans=max(ans,f[i][j]-f[i-r][j]-f[i][j-c]+f[i-r][j-c]);
27     printf("%d",ans);
28     return 0;
29 }
原文地址:https://www.cnblogs.com/chen74123/p/7464975.html