文章
5
粉丝
9
获赞
2
访问
2.5k
二位前缀和 重要代码
二位前缀和基础知识部分可以参考:https://www.bilibili.com/video/BV1pi4y1j7si
res=sum[x2][y2]-sum[x2][y1-1]-sum[x1-1][y2]+sum[x1-1][y1-1];
sum[i][j]=g[i][j]+sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1];
暴力模拟每个可能的矩形,通过二位前缀和,大于等于k的就是合理的答案(这个思路说得比较简略,如果还是不太懂可以参考这个:https://www.acwing.com/solution/content/98309/)
#include<bits/stdc++.h>
using namespace std;
int arr[510][510];
int sum[510][510];
int main(){
int ans=0;
int r,c,n,k;
cin>>r>>c>>n>>k;
memset(arr,0,sizeof(arr));
memset(sum,0,sizeof(sum));
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
arr[x][y]=1;
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
sum[i][j]=arr[i][j]+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
for(int x=i;x<=r;x++){
for(int y=j;y<=c;y++){
...
登录后发布评论
暂无评论,来抢沙发