#include<bits/stdc++.h>
using namespace std;
long long pre[1010][1010];
long long a[1001][1010];
int main()
{
int i,j,k,m,n,hs,ws,hb,wb,q;
int t;
cin>>t;
while(t--)
{
memset(pre,0,sizeof(pre));
memset(a,0,sizeof(a));
cin>>n>>q;
int h,s;
for(i=1;i<=n;i++)
{
cin>>h>>s;
a[h][s]+=h*s;
}
for(i=1;i<=1000;i++)
{
for(j=1;j<=1000;j++)
{
pre[i][j]=pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+a[i][j];
}//二维前缀和!
}
for(i=0;i<q;i++)
{
long long hs,ws,hb,wb;
cin>>hs>>ws>>hb>>wb;
cout<<pre[hb-1][wb-1]-pre[hb-1][ws]-pre[hs][wb-1]+pre[hs][ws]<<endl;
}
}
}
E. Counting Rectangles(二维前缀和)
最新推荐文章于 2024-07-08 21:32:26 发布