0
点赞
收藏
分享

微信扫一扫

2021-4 CCF 邻域均值(100分)

洛茄 2022-01-31 阅读 30

解题核心:

 代码:

 

#include<iostream>
using namespace std;
int a[600][600];
int sum[600][600];
int main()
{
	int n, L, r, t;
	cin >> n >> L >> r >> t;
	int num = 0;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			cin >> a[i][j];

		}
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			sum[i][j] = sum[i][j-1] + sum[i-1][j] - sum[i - 1][j - 1] + a[i][j];
		}
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			int minx = max(1, i - r);
			int miny = max(1, j - r);
			int maxx = min(n, r + i);
			int maxy = min(n, r + j);
			double s = double(sum[maxx][maxy] - sum[maxx][miny-1] - sum[minx-1][maxy] + sum[minx-1][miny-1]) / double((maxx - minx+1) * (maxy - miny+1));
			if (s <= double(t))
				num++;
		}

	}
	cout << num << endl;
	return 0;
}

 

举报

相关推荐

0 条评论