本文最后更新于 1102 天前,其中的信息可能已经有所发展或是发生改变。
直接暴力前缀和
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
return x*f;
}
const int N=600+5;
int a[N][N],s[N][N];
int n,L,r,t;
int ans;
bool check(int x,int y){
long long tmp=1ll*s[min(n,x+r)][min(n,y+r)]+1ll*s[max(0,x-r-1)][max(0,y-r-1)]-1ll*s[max(0,x-r-1)][min(n,y+r)]-1ll*s[min(n,x+r)][max(0,y-r-1)];
// cerr<<tmp<<"<tmp"<<endl;
int num=(min(n,x+r)-max(0,x-r-1))*(min(n,y+r)-max(0,y-r-1));
double qaq=1.0*tmp/num;
// cerr<<qaq<<"<qaq"<<endl;
return qaq<=1.0*t;
}
int main(){
n=read();L=read();r=read();t=read();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
a[i][j]=read();
s[i][j]+=a[i][j];
s[i][j]+=s[i][j-1];
s[i][j]+=s[i-1][j];
s[i][j]-=s[i-1][j-1];
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(check(i,j)) ans++;
cout<<ans<<endl;
}