AT_joi2019ho_a.勇者ビ太郎 (Bitaro the Brave)

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

勇者比太郎即将与魔王对峙。

比太郎在一个高 HH 行、宽 WW 列的格子上,分别放置了宝石(Jewel)、宝珠(Orb)、金块(Ingot),并打算通过发动魔法来攻击魔王。下面,将从上往下第 ii 行(1≤i≤H1 \leq i \leq H)、从左往右第 jj 列(1≤j≤W1 \leq j \leq W)的格子记作格子 (i,j)(i, j)。

比太郎已经在每个格子上放置了上述三种物品中的一种。现在他准备发动魔法,而这次魔法的威力取决于格子上宝石、宝珠和金块的分布。具体来说,满足以下条件的整数四元组 (i,j,k,l)(i, j, k, l)(1≤i<k≤H1 \leq i < k \leq H,1≤j<l≤W1 \leq j < l \leq W)的个数,就是魔法的威力。

条件:格子 (i,j)(i, j) 上放有宝石,格子 (i,l)(i, l) 上放有宝珠,格子 (k,j)(k, j) 上放有金块。

比太郎很在意这次魔法的威力。

给定格子上宝石、宝珠、金块的分布,请编写程序计算比太郎发动的魔法的威力。

输入格式

输入从标准输入读入,格式如下:

HH WW
S1S_1
⋮\vdots
SHS_H

SiS_i(1≤i≤H1 \leq i \leq H)是长度为 WW 的字符串,第 jj 个字符(1≤j≤W1 \leq j \leq W)为 J 时表示格子 (i,j)(i, j) 上放有宝石,为 O 时表示放有宝珠,为 I 时表示放有金块。

输出格式

输出一个整数,表示魔法的威力。

输入输出样例

  • 输入#1

    3 4
    JOIJ
    JIOO
    IIII

    输出#1

    3
  • 输入#2

    4 4
    JJOO
    JJOO
    IIJO
    IIIJ

    输出#2

    17

说明/提示

限制

  • 2≤H≤30002 \leq H \leq 3000。
  • 2≤W≤30002 \leq W \leq 3000。
  • SiS_i 是长度为 WW 的字符串(1≤i≤H1 \leq i \leq H)。
  • SiS_i 的每个字符都是 J、O、I 之一(1≤i≤H1 \leq i \leq H)。

子任务

  1. (20 分)H≤100H \leq 100,W≤100W \leq 100。
  2. (30 分)H≤500H \leq 500,W≤500W \leq 500。
  3. (50 分)无额外限制。

样例解释 1

在这个输入样例中,满足条件的 (i,j,k,l)=(1,1,3,2),(2,1,3,3),(2,1,3,4)(i, j, k, l) = (1, 1, 3, 2), (2, 1, 3, 3), (2, 1, 3, 4) 共 33 组,因此答案为 33。

由 ChatGPT 4.1 翻译

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

首页