一种新的思路
查看原帖
一种新的思路
1003136
aimoyudexianyu楼主2024/4/28 17:28

鉴于该问题只向外扩展2格,所以可以直接用绝对值函数把负的变成正的,不会影响结果

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll;
const ll MAX = 1e8+5;
ll k[115][115], huo, ying, x, y, n, ans;
int main(){
    cin >> n >> huo >> ying;
    rep(j,1,huo){
        cin >> x >> y;
        ll x1 = x-2, y1 = y-2;
        k[x-1][y-1]=1;
        k[x-1][y+1]=1;
        k[x+1][y-1]=1;
        k[x+1][y+1]=1;
        rep(i,1,5) k[x][abs(y1++)] = 1;
        rep(i,1,5) k[abs(x1++)][y] = 1;
    }
    rep(i,1,ying){
        cin >> x >> y;
        x-=2,y-=2;
        rep(xx,x,x+4)
            rep(yy,y,y+4) 
                k[abs(xx)][abs(yy)]=1;
    }
    rep(i,1,n) rep(j,1,n) if(!k[j][i]) ans++;
    cout << ans;
    return 0;
}
2024/4/28 17:28
加载中...