题目链接:
计算机软件能力认证考试系统http://118.190.20.162/view.page?gpid=T127
【分析】看数据量就知道了,要用滑动窗口+前缀和
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n, l, r, t, m, d;
n = scanner.nextInt();
l = scanner.nextInt();
r = scanner.nextInt();
t = scanner.nextInt();
d = r * 2; m = n + d;
int[][] arr = new int[m][m];
int[][] pre = new int[m][m];
int[][] ret = new int[m][m];
int i, j, x, y, p, q, u, v;
for(i = 0; i < n; i++){
for(j = 0; j < n;j++){
arr[i][j] = scanner.nextInt();
pre[i][j] = arr[i][j];
ret[i][j] = pre[i][j];
}
}
for(i = 0; i < n; i++){
for(j = 1; j < m; j++){
if(j <= d) {
pre[i][j] = pre[i][j - 1] + arr[i][j];
ret[i][j] = pre[i][j];
}
else{
pre[i][j] = pre[i][j - 1] + arr[i][j] - arr[i][j - d - 1];
ret[i][j] = pre[i][j];
}
}
}
for(j = 0; j < m; j++){
for(i = 1; i < m; i++){
if(i <= d) {
pre[i][j] = pre[i - 1][j] + ret[i][j];
}
else{
pre[i][j] = pre[i - 1][j] + ret[i][j] - ret[i - d - 1][j];
}
}
}
int row = 0, col = 0, ans = 0;
for(i = r; i < m - r; i++){
for(j = r; j < m - r; j++){
if(i <= d) row = i + 1;
else if(i >= n) row = d - (i - n);
else row = d + 1;
if(j <= d) col = j + 1;
else if(j >= n) col = d - (j - n);
else col = d + 1;
if((double)pre[i][j] / (row * col) <= t) ans++;
}
}
System.out.println(ans);
}
}