求解
  • 板块灌水区
  • 楼主XPeach
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/7 16:29
  • 上次更新2024/10/7 18:55:51
查看原帖
求解
1375342
XPeach楼主2024/10/7 16:29

题目背景

信而安之,阴以图之。备而后动,勿使有变。刚中柔外也。

题目描述

33DAI 拿到了一副 nnn 行 mmm 列的二维字符画,字符画中的 n×mn×mn×mn×mn\times mn×m 个字符都是 262626 个小写英文字母中的一个。33DAI 认为 v 是个笑脸,而如果有一些 v 构成了一个开口朝着左上方的直角,就认为这是一把刀。比如下面的所有 v 就构成了一个开口朝着左上方的直角:

oooov
oooov
ovvvv

形式化的说,如果有一个 v 左边有连续的不少于一个 v,上面也有连续的不少于一个 v,那么这些 v 就构成了一个开口朝着左上方的直角,33DAI 就认为是一把刀。

33DAI 认为只要形状不同或者位置不同就是不同的刀,所以上面的那个例子中有 6 把刀。(下面展现了那六把刀的位置,和刀无关的部分都用 v 表示了。)

ooooo  oooov  ooooo  oooov  ooooo  oooov  
oooov  oooov  oooov  oooov  oooov  oooov  
ooovv  ooovv  oovvv  oovvv  ovvvv  ovvvv  

现在给你一个 nnmm 列的二维字符画,请你数数有多少把刀吧!

输入格式

第一行为两个整数 n,mn,mn,mn,mn,mn,m

接下来 nn 行,每行有 mm 个字符,即 n×mn×mn×mn×mn\times mn×m 的字符画。

输出格式

一个整数,即刀的数量。

输入数据1

3 5
oooov
oovov
ovvvv

输出数据 1

7

在题目描述的基础上多加了一把刀,新刀的位置是:

ooooo
oovoo
ovvoo

输入数据 2

3 5
vvoov
vooov
ovvvv

输出数据 2

6

虽然多了一个直角,但是这个直角的开口是朝右下的,所以没有多出来的刀。

输入数据 3

3 3
vvv
vvv
vvv

输出数据 3

9

输入数据 4

10 10
vvvvvoovvv
oovvvvvvvv
ovvvvvvooo
vvvvooovvv
vvvvvvvvvv
vvvvvvvvvv
vvvvvvvvvv
vvvvvvvvvv
vvvvvvovvv
vvvvvvvvvv

输出数据 4

850

数据规模与约定

对于 100100% 的数据,1n,m200011≤n,m≤20001

  • 子任务 1(10 分):保证n=m=2n=m=2
  • 子任务 2(20 分):保证n=2n=2
  • 子任务 3(30 分):保证1n,m1001n,m1001n,m1001≤n,m≤1001 \le n,m \le 1001≤n,m≤100
  • 子任务 4(40 分):没有特殊限制。
2024/10/7 16:29
加载中...