QOJ.ac

QOJ

时间限制: 2.0 s 内存限制: 1024 MB 总分: 100

#9965. 游戏 MPO

统计

在棋盘游戏 MPO 中,你在 $n \times n$ 的方格棋盘上通过建造建筑来获得分数。给定棋盘的初始状态,每个单元格由以下 7 种字符之一描述:.mpoMPO

  • 大写字母 M、P、O 分别表示已建造建筑的单元格:大都市(metropolis)、公园(park)或海洋(ocean)。
  • 小写字母 m、p、o 分别表示可以建造大都市、公园或海洋的空单元格。
  • . 表示不能建造任何建筑的空单元格。

每建造一个建筑,你获得 1 分;每有一对相邻(边或角相邻)的大都市-公园结构,或海洋-海洋结构,你获得 1 分。一次移动是指在允许的单元格上建造一个建筑,即将小写字母变为对应的大写字母:m → M,p → P,或 o → O。禁止进行仅能获得 1 分的移动(即增加分数恰好为 1 的移动)。

你的策略很简单:你总是进行得分最高的移动之一。当你无法进行合法移动时(即没有可能的移动能获得至少 2 分时),游戏结束。

你的任务是确定初始分数和最终分数,以及最终的棋盘状态。可以证明,最终状态与我们如何处理得分相同的移动之间的平局无关。

输入格式

第一行包含一个整数 $n$ ($2 \le n \le 10$),表示棋盘的大小。 接下来的 $n$ 行描述初始棋盘。每行包含一个由 $n$ 个字符组成的字符串,字符集为 .mpoMPO

输出格式

第一行输出两个整数——初始分数和最终分数。 接下来的 $n$ 行应以与输入相同的格式描述最终棋盘。

样例

样例输入 1

4
.pm.
Mom.
OOm.
p..p

样例输出 1

4 13
.PM.
MOM.
OOm.
p..p

说明

初始棋盘有 3 个建筑(一个大都市和两个海洋),并且有一对相邻的海洋,总分为 4。

  • 第一步:建造一个海洋,获得 3 分(1 分来自新建筑,2 分来自两对新的相邻海洋)。
  • 第二步:建造一个公园,获得 2 分(1 分来自新建筑,1 分来自一对新的大都市-公园)。
  • 第三步和第四步(任意顺序):建造两个新的大都市,每个获得 2 分。

最后,还有三个剩余的单元格可以建造建筑,但对其中任何一个进行移动都只能获得 1 分。游戏以 13 分的总分结束(7 个建筑,3 对大都市-公园,3 对海洋-海洋)。

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.