思路:
去年不会写的今年会写了,哈哈好开森
这题实际很简单,主打一个暴力枚举
package 数组;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Arrays;
//1表示光亮,2表示火把,3表示萤石,其实区不区分火把和萤石不重要,只要用方法来区分操作就可以了
public class P1789 {
static void huoba(int arr[][], int n, int x, int y) {
if(x-2 >= 0)
arr[x-2][y] = 1;
if(x-1>=0) {
arr[x-1][y] = 1;
if(y-1 >= 0)
arr[x-1][y-1] = 1;
if(y+1 < n)
arr[x-1][y+1] = 1;
}
if(y-1 >= 0)
arr[x][y-1] = 1;
if(y-2>=0)
arr[x][y-2] = 1;
if(y+1 < n)
arr[x][y+1] = 1;
if(y+2 < n)
arr[x][y+2] = 1;
if(x+1 < n) {
arr[x+1][y] = 1;
if(y-1 >= 0)
arr[x+1][y-1] = 1;
if(y+1 < n)
arr[x+1][y+1] = 1;
}
if(x+2 < n)
arr[x+2][y] = 1;
}
static void yingshi(int arr[][], int n, int x, int y) {
arr[x][y] = 1;
if(y-2 >= 0)
arr[x][y-2] = 1;
if(y-1 >= 0)
arr[x][y-1] = 1;
if(y+1 < n)
arr[x][y+1] = 1;
if(y+2 < n)
arr[x][y+2] = 1;
if(x-2 >= 0) {
arr[x-2][y] = 1;
if(y-2 >= 0)
arr[x-2][y-2] = 1;
if(y-1 >= 0)
arr[x-2][y-1] = 1;
if(y+1 < n)
arr[x-2][y+1] = 1;
if(y+2 < n)
arr[x-2][y+2] = 1;
}
if(x-1 >= 0) {
arr[x-1][y] = 1;
if(y-2 >= 0)
arr[x-1][y-2] = 1;
if(y-1 >= 0)
arr[x-1][y-1] = 1;
if(y+1 < n)
arr[x-1][y+1] = 1;
if(y+2 < n)
arr[x-1][y+2] = 1;
}
if(x+1 < n) {
arr[x+1][y] = 1;
if(y-2 >= 0)
arr[x+1][y-2] = 1;
if(y-1 >= 0)
arr[x+1][y-1] = 1;
if(y+1 < n)
arr[x+1][y+1] = 1;
if(y+2 < n)
arr[x+1][y+2] = 1;
}
if(x+2 < n) {
arr[x+2][y] = 1;
if(y-2 >= 0)
arr[x+2][y-2] = 1;
if(y-1 >= 0)
arr[x+2][y-1] = 1;
if(y+1 < n)
arr[x+2][y+1] = 1;
if(y+2 < n)
arr[x+2][y+2] = 1;
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
st.nextToken();
int n = (int)st.nval;
st.nextToken();
int m = (int)st.nval;
st.nextToken();
int k = (int)st.nval;
int arr[][] = new int[n][n];
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
arr[i][j] = 0;
}
}
for(int i = 0; i < m; i++) {
st.nextToken();
int x = (int)st.nval;
st.nextToken();
int y = (int)st.nval;
arr[x-1][y-1] = 2;
huoba(arr, n, x-1, y-1);
}
for(int i = 0; i < k; i++) {
st.nextToken();
int x = (int)st.nval;
st.nextToken();
int y = (int)st.nval;
arr[x-1][y-1] = 3;
yingshi(arr, n, x-1, y-1);
}
int cnt = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
// System.out.print(arr[i][j] + " ");
if(arr[i][j] == 0)
cnt ++;
}
// System.out.println();
}
out.print(cnt);
out.flush();
}
}