AT_abc377_c.[ABC377C] Avoid Knight Attack
普及-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个由 N 行 N 列组成的 N2 个格子的棋盘。我们将从上往下第 i 行(1≤i≤N)、从左往右第 j 列(1≤j≤N)的格子称为格子 (i,j)。
每个格子要么是空格,要么已经放置了一个棋子。棋盘上总共放置了 M 个棋子,第 k 个棋子(1≤k≤M)放在格子 (ak,bk) 上。
你想要在任意一个空格上放置你自己的棋子,并且要保证不会被已经放置的任意一个棋子吃掉。
放在格子 (i,j) 上的棋子可以吃掉满足下列任意一个条件的棋子:
- 放在 (i+2,j+1) 上
- 放在 (i+1,j+2) 上
- 放在 (i−1,j+2) 上
- 放在 (i−2,j+1) 上
- 放在 (i−2,j−1) 上
- 放在 (i−1,j−2) 上
- 放在 (i+1,j−2) 上
- 放在 (i+2,j−1) 上
但对于不存在的格子,这些条件始终不成立。
例如,放在格子 (4,4) 上的棋子可以吃掉下图中蓝色格子上的棋子。

请你计算,有多少个格子可以放置你的棋子,并且不会被已经放置的棋子吃掉。
输入格式
输入按以下格式从标准输入读入。
N M
a1 b1
a2 b2
⋮
aM bM
输出格式
输出一个整数,表示可以放置你的棋子且不会被已有棋子吃掉的空格的数量。
输入输出样例
输入#1
8 6 1 4 2 1 3 8 4 5 5 2 8 3
输出#1
38
输入#2
1000000000 1 1 1
输出#2
999999999999999997
输入#3
20 10 1 4 7 11 7 15 8 10 11 6 12 5 13 1 15 2 20 10 20 15
输出#3
338
说明/提示
限制条件
- 1≤N≤109
- 1≤M≤2×105
- 1≤ak≤N,1≤bk≤N (1≤k≤M)
- (ak,bk)=(al,bl) (1≤k<l≤M)
- 输入均为整数
样例解释 1
已经放置的棋子可以吃掉下图中蓝色格子上的棋子。

因此,剩下 38 个格子可以放置你的棋子且不会被已有棋子吃掉。
样例解释 2
1018 个格子中,不能放置的格子只有 (1,1),(2,3),(3,2) 这 3 个格子。
请注意,答案可能大于 232。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?