AT_abc377_c.[ABC377C] Avoid Knight Attack

普及-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个由 NN 行 NN 列组成的 N2N^2 个格子的棋盘。我们将从上往下第 ii 行(1≤i≤N1\leq i\leq N)、从左往右第 jj 列(1≤j≤N1\leq j\leq N)的格子称为格子 (i,j)(i,j)。

每个格子要么是空格,要么已经放置了一个棋子。棋盘上总共放置了 MM 个棋子,第 kk 个棋子(1≤k≤M1\leq k\leq M)放在格子 (ak,bk)(a_k, b_k) 上。

你想要在任意一个空格上放置你自己的棋子,并且要保证不会被已经放置的任意一个棋子吃掉。

放在格子 (i,j)(i,j) 上的棋子可以吃掉满足下列任意一个条件的棋子:

  • 放在 (i+2,j+1)(i+2, j+1) 上
  • 放在 (i+1,j+2)(i+1, j+2) 上
  • 放在 (i−1,j+2)(i-1, j+2) 上
  • 放在 (i−2,j+1)(i-2, j+1) 上
  • 放在 (i−2,j−1)(i-2, j-1) 上
  • 放在 (i−1,j−2)(i-1, j-2) 上
  • 放在 (i+1,j−2)(i+1, j-2) 上
  • 放在 (i+2,j−1)(i+2, j-1) 上

但对于不存在的格子,这些条件始终不成立。

例如,放在格子 (4,4)(4,4) 上的棋子可以吃掉下图中蓝色格子上的棋子。

请你计算,有多少个格子可以放置你的棋子,并且不会被已经放置的棋子吃掉。

输入格式

输入按以下格式从标准输入读入。

NN MM
a1a_1 b1b_1
a2a_2 b2b_2
⋮\vdots
aMa_M bMb_M

输出格式

输出一个整数,表示可以放置你的棋子且不会被已有棋子吃掉的空格的数量。

输入输出样例

  • 输入#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≤1091\leq N\leq 10^9
  • 1≤M≤2×1051\leq M\leq 2\times 10^5
  • 1≤ak≤N,1≤bk≤N (1≤k≤M)1\leq a_k\leq N, 1\leq b_k\leq N\ (1\leq k\leq M)
  • (ak,bk)≠(al,bl) (1≤k<l≤M)(a_k, b_k)\neq(a_l, b_l)\ (1\leq k<l\leq M)
  • 输入均为整数

样例解释 1

已经放置的棋子可以吃掉下图中蓝色格子上的棋子。

因此,剩下 3838 个格子可以放置你的棋子且不会被已有棋子吃掉。

样例解释 2

101810^{18} 个格子中,不能放置的格子只有 (1,1),(2,3),(3,2)(1,1),(2,3),(3,2) 这 33 个格子。
请注意,答案可能大于 2322^{32}。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页