传统题 1000ms 256MiB

数数几个P

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

TooY0ungTooY0ung 写下了一个 nnn *n 的矩阵,想让你看看,里面有多少个合法的字母 PP

PP 的形状由一个空心的矩形和一个竖线组成,不强制限制竖线的粗细和长度,但是竖线和空心矩形需要相邻,且竖线的顶部需要与空心矩形顶部平齐,底部要长于空心矩形。

空心的矩形可以理解为一个全为 '*' 的实心矩形,把中间的一个矩形区域变为字符 '.'。

给大家几个空心矩形的例子:

****
*..*
*..*
****
****
**.*
**.*
****
*****
*****
**.**
*****
*****

注意,竖线部分也需要保证是一个实心矩形。

竖线和空心矩形需要相邻可以理解为在空心矩形的左侧或右侧或上侧或下侧,贴一个竖线过来(不能和空心矩形的边重叠),注意竖线一端和空心矩形平齐,另一端需要更长。

以下都是正确的 PP :

*****
**..*
**..*
*****
*....
*****.
**..*.
**..*.
*****.
*.....
*.....
.......
******.
***..*.
***..*.
******.
**.....
**.....
.......
******.
****.*.
****.*.
******.
**.....
**.....

一些不是合法 PP 的例子:

*****
**..*
**..*
*****
**...
.****
.*..*
.*..*
.****
.*...
*****
**..*
***.*
*****
*....
*****
*****
*****
*****
*....
*.....
*****.
**..*.
**..*.
*****.
*.....

数据中没有斜着的 PP,即保证 PP 的空心矩形的边和最大的矩形的边平行,且没有连在一起(两个 PP 不会在上下左右方向相邻)或者重叠交叉的两个 PP,这样其实也看不清楚是不是字母 PP

由于上一场有同学提问,所以还是给个补充说明,其实由题目中给的例子也可以看出,连在一起的 '*' 都要被看作一个整体,我们不能抽出来一部分来进行计算 PP 的数量。

输入格式

第一行输入一个数 nn,表示矩阵大小。

接下来输入一个只包含字母 '.' 和 '*' 的矩阵。

输出格式

一行一个数字,表示答案。

6
****..
*..*..
*..*..
****..
******
......
1

注意

为了防止各位骗分高手的恶意骗分,本道题目将采用最低分计分制,即如果有数据点得分为 00,则最终得分为 00,这个东西同学们应该不陌生了,还是那句话, TooY0ungTooY0ung 还是很 liangliang 心的。

数据规模与约定

对于 100%100\% 的数据,1n201 \le n \le 20

新春马拉松赛(挖土机周赛 Round 40)

未参加
状态
已结束
规则
乐多
题目
8
开始于
2025-1-29 0:00
结束于
2025-2-8 0:00
持续时间
240 小时
主持人
参赛人数
129