题目:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5dd2938110f984d9fe2147ed08e202b4.png#pic_center)
分析:
为什么要用前缀和呢?
因为我每次都遍历一下,不如想方设法从起点记录一下个数,最后才去遍历呢。
傻了傻了,换成二维的自己就不会了?
还不就是多个一维的吗?
一定要对区间求个数敏感。
代码:
#include<bits/stdc++.h>
using namespace std;
int A[1005][1005];
int B[1005][1005];
int m,n;
int main()
{
cin>>m>>n;
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
for(int i=0;i<n;i++)
{
int a1,a2,b1,b2;
cin>>b1>>a1>>b2>>a2;
a1--;a2--;b1--;b2--;
for(;b1<=b2;b1++)
{
A[b1][a1]++;
A[b1][a2+1]--;
}
}
for(int i=0;i<m;i++)
{
int c=0;
for(int j=0;j<m;j++)
{
c+=A[i][j];
B[i][j]=c;
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++) cout<<B[i][j]<<' ';
cout<<endl;
}
}