2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=1010; int d[N][N],a[N][N]; int main() { int n,m;scanf("%d%d",&n,&m); memset(d,0,sizeof(d)); for(int i=1,xa,ya,xb,yb;i<=m;++i) { scanf("%d%d%d%d",&xa,&ya,&xb,&yb); ++d[xa][ya]; --d[xb+1][ya]; --d[xa][yb+1]; ++d[xb+1][yb+1]; } memset(a,0,sizeof(a)); for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)a[i][j]=d[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1]; for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)printf("%d%c",a[i][j],j==n?'\n':' '); return 0; } -
0
A10 差分 二维差分(视频的方法不够优,超时60分)
#include<bits/stdc++.h> using namespace std; const int N=1010; int d[N][N],a[N][N]; int main() { int n,m;scanf("%d%d",&n,&m); memset(d,0,sizeof(d)); for(int i=1,xa,ya,xb,yb;i<=m;++i) { scanf("%d%d%d%d",&xa,&ya,&xb,&yb); ++d[xa][ya]; --d[xb+1][ya]; --d[xa][yb+1]; ++d[xb+1][yb+1]; } memset(a,0,sizeof(a)); for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)a[i][j]=d[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1]; for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)printf("%d%c",a[i][j],j==n?'\n':' '); return 0; }
- 1
信息
- ID
- 750
- 时间
- 300ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 257
- 已通过
- 54
- 上传者