这题目要做个预处理,q[i][j]表示从p[1][1]到p[i][j]这个区间的鸭子数。不然会超时的~!
代码如下:
#include<iostream>
using namespace std;
int main()
{
static int p[1005][1005],q[1005][1005];
int t,i,j,tt,x1,y1,x2,y2,sum,n,m,k,l;
while(cin>>t)
{
while(t--)
{
cin>>n>>m;
for(i=0;i<=1002;i++)
{
p[0][i]=0;
p[i][0]=0;
q[0][i]=0;
q[i][0]=0;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&p[i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
q[i][j]=q[i-1][j]+q[i][j-1]+p[i][j]-q[i-1][j-1];
cin>>tt;
while(tt--)
{
cin>>x1>>y1>>x2>>y2;
if(x1>x2)
{
l=x1;x1=x2;x2=l;
}
if(y1>y2)
{
l=y1;y1=y2;y2=l;
}
sum=q[x2][y2]-q[x1-1][y2]-q[x2][y1-1]+q[x1-1][y1-1];
cout<<sum<<endl;;
}
cout<<endl;
}
}
return 0;
}