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;
}