哪里有问题
查看原帖
哪里有问题
1031647
IeoA楼主2023/7/5 17:10

就是暴力把所有位置标记上

#include <bits/stdc++.h>
using namespace std;

int __map[105][105] = {0}, n, m, k, a, b, ans;


bool pd(int x, int y) {
	if (x < 1 || y < 1 || x > n || y > n) {
		return 0;
	}
	return 1;
}

int main() {
	cin >> n >> m >> k;
	ans = n * n;
	for (int i = 1; i <= m; i++) {
		cin >> a >> b;
		int l1 = b - 1, r1 = b + 1;
		int l2 = a - 1, r2 = a + 1;
		for (int i = l1; i <= r1; i++) {
			for (int j = l2; j <= r2; j++) {
				if (pd(i, j)) {
					__map[i][j]++;
				}
			}
		}
		if (pd(a + 2, b)) {
			__map[a + 2][b]++;
		}
		if (pd(a - 2, b)) {
			__map[a - 2][b]++;
		}
		if (pd(a, b + 2)) {
			__map[a][b + 2]++;
		}
		if (pd(a, b - 2)) {
			__map[a][b - 2]++;
		}
	}
	for (int i = 1; i <= k; i++) {
		cin >> a >> b;
		int l1 = b - 2, r1 = b + 2;
		int l2 = a - 2, r2 = a + 2;
		for (int i = l1; i <= r1; i++) {
			for (int j = l2; j <= r2; j++) {
				if (pd(i, j) || abs(a) + abs(b) <= 2) {
					__map[i][j]++;
				}
			}
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (__map[i][j] != 0) {
				ans--;
			}
		}
	}
	cout << ans << endl;
	return 0;
}
2023/7/5 17:10
加载中...