QOJ.ac

QOJ

Límite de tiempo: 3 s Límite de memoria: 512 MB Puntuación total: 50

#11434. 国际象棋

Estadísticas

两位国际象棋大师 Vito 和 Patrik 今年将在 Jane 街的标志性剧院前进行一场国际象棋比赛,最终证明谁才是史上最伟大的棋手。然而,由于标准国际象棋对他们来说已经变得索然无味,他们决定修改游戏规则以增加趣味性。我们仅提及与本题相关的规则。

棋盘是一个 $N$ 行 $N$ 列的方阵。仅使用骑士(knight)、车(rook)和后(queen)这几种棋子。棋子的行为方式与标准国际象棋相同。车攻击与其处于同一行或同一列的方格。后除了攻击与其处于同一行或同一列的所有方格之外,还会攻击沿同一对角线的所有方格。骑士攻击距离其两个行单位和一个列单位(或反之)的方格。这些移动的示例可以在样例说明中看到。

注意:每个棋子也会攻击其自身所在的方格。此外,棋子会穿过其他棋子进行攻击,即无论棋子与被攻击方格之间是否有其他棋子,棋子都会根据上述规则攻击相应的方格。

Vito 正在为期待已久的对决做准备,他需要你的帮助。他决定练习快速观察能力。他将在棋盘上放置 $M$ 个棋子,然后确定所有被攻击的方格。你的任务是计算给定棋盘上被攻击方格的总数。

输入格式

第一行包含正整数 $N$ 和 $M$ ($1 \le N \le 200, 1 \le M \le N^2$)。

接下来的 $M$ 行,每行包含一个大写英文字母,表示棋子类型,可以是 'N'、'R' 和 'Q',分别对应骑士、车和后,以及整数 $r_i$ 和 $c_i$ ($1 \le r_i, c_i \le N$),表示该棋子所在的行和列。

棋盘上的任意方格最多只能放置一个棋子。

输出格式

在唯一的一行中,输出棋盘上被攻击方格的数量。

子任务

子任务 分值 数据范围
1 13 棋盘上的所有棋子均为车。
2 19 棋盘上的每个棋子均为车或后。
3 18 无附加限制。

样例

输入 1

7 1
Q 4 4

输出 1

25

输入 2

5 1
N 3 3

输出 2

9

输入 3

6 3
R 1 4
Q 2 1
N 5 2

输出 3

25

说明

第一和第二个样例的说明:图中展示了样例。所有被攻击的方格都用点标记,棋子所在的方格除外。

(a) 第一个样例 (b) 第二个样例

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.