JAVA 40分路过 #1#4#5WA
查看原帖
JAVA 40分路过 #1#4#5WA
809653
LeeJC楼主2024/8/16 00:03
import java.util.*;
public class Main {
    void fire(int x, int y, boolean[][] mp) {
        // 一行一列
        for (int i = 1; i < mp.length; i++) {
            mp[i][y] = true;
            mp[x][i] = true;
        }

        // 四个角
        mp[Math.max(1, x-1)][Math.min(mp.length-1, y+1)] = true;
        mp[Math.max(1, x-1)][Math.max(1, y-1)] = true;
        mp[Math.min(mp.length-1, x+1)][Math.max(1, y-1)] = true;
        mp[Math.min(mp.length-1, x+1)][Math.min(mp.length-1, y+1)] = true;
    }

    void stone(int x, int y, boolean[][] mp) {
        // 左上角
        int x_1 = Math.max(1, x-2);
        int y_1 = Math.max(1, y-2);

        // 右下角
        int x_2 = Math.min(mp.length - 1, x + 2);
        int y_2 = Math.min(mp.length - 1, y + 2);

        for (int i = x_1; i <= x_2; i++) {
            for (int i1 = y_1; i1 <= y_2; i1++) {
                mp[i][i1] = true;
            }
        }

    }

    public static void main(String[] args) {
        Scanner sn = new Scanner(System.in);
        Main main = new Main();

        int n = sn.nextInt();
        int m = sn.nextInt();
        int k = sn.nextInt();

        boolean[][] mp = new boolean[n + 1][n + 1];

        for (int i = 0; i < m; i++) {
            int x = sn.nextInt();
            int y = sn.nextInt();
            main.fire(x, y, mp);
        }

        for (int i = 0; i < k; i++) {
            int x = sn.nextInt();
            int y = sn.nextInt();
            main.stone(x, y, mp);
        }

        int cnt = 0;
        for (int i = 1; i < mp.length; i++) {
            for (int i1 = 1; i1 < mp[i].length; i1++) {
                if(!mp[i][i1])  cnt++;
            }
        }

        System.out.println(cnt);
    }
}
2024/8/16 00:03
加载中...