2022.5.10 AcWing每日一题

签到题

边界处理

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

typedef pair<int, int> PII;

const int N = 1e3 + 10;
int n;
int w[N][N];
int st[N][N];
vector<PII> v;

int main() {
	scanf("%d", &n);

	int ans = 0;
	for (int i = 1; i <= n; i++) {
		int a, b;
		scanf("%d %d", &a, &b);
		if (i == 1) {
			st[a][b] = 1;
		} else {
			st[a][b] = 1;
			int cnt = 0;
			if (a - 1 >= 0) {
				if (st[a - 1][b]) {
					cnt++;
					w[a - 1][b]++;
					if (w[a - 1][b] == 4)
						ans--;
					else if (w[a - 1][b] == 3)
						ans++;
				}
			}
			if (b - 1 >= 0) {
				if (st[a][b - 1]) {
					cnt++;
					w[a][b - 1]++;
					if (w[a][b - 1] == 4)
						ans--;
					else if (w[a][b - 1] == 3)
						ans++;
				}
			}
			if (st[a + 1][b]) {
				cnt++;
				w[a + 1][b]++;
				if (w[a + 1][b] == 4)
					ans--;
				else if (w[a + 1][b] == 3)
					ans++;
			}
			if (st[a][b + 1]) {
				cnt++;
				w[a][b + 1]++;
				if (w[a][b + 1] == 4)
					ans--;
				else if (w[a][b + 1] == 3)
					ans++;
			}
			w[a][b] = cnt;
			if (cnt == 3)
				ans++;
		}
		printf("%d\n", ans);
	}


	return 0;
}
posted @ 2022-05-10 15:37  superPG  阅读(21)  评论(0编辑  收藏  举报