202104-2 邻域均值

二维前缀和。

const int N = 610;
int g[N][N], sum[N][N];
int n,l,r,t;

int main()
{
    cin >> n >> l >> r >> t;
    
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
        {
            cin >> g[i][j];
            sum[i][j] = sum[i][j-1] + sum[i-1][j] - sum[i-1][j-1] + g[i][j];
        }
    
    int res = 0;
    for(int i = 1; i <= n; i++) 
        for(int j = 1; j <= n; j++)
        {
            int a = max(1, i - r), b = max(1, j - r);
            int c = min(n, i + r), d = min(n, j + r);
            int s = sum[c][d] - sum[c][b-1] - sum[a-1][d] + sum[a-1][b-1];
            int cnt = (c - a + 1) * (d - b + 1);
            if(s <= t * cnt) res++;
        }
        
    cout << res << endl;
    
    return 0;
}
posted @ 2021-06-20 19:20  Dazzling!  阅读(1021)  评论(0编辑  收藏  举报