JOI 夏季セミナーコンテスト 2020
コンテスト日時
2020/08/27 (Th) 21:00 - 22:30

C - 魔法の宝石 2 (magical Jewels 2)

Earlgray
2
s
1024
MB
100

問題文

$H$ 行 $W$ 列のマス目がある.上から $i$ 行目,左から $j$ 列目のマスをマス $(i,j)$ と呼ぶことにする. 各マスには $1$ つの宝石があり,マス $(i,j)$ には種類 $s_{i,j}$ の宝石が落ちている.
ただし, 落ちている宝石の種類は A, B, C, D, E, F, G, H, I, J の 10 種類のうちいずれかである.
さて,JOI 君は整数 $a, b, c, d\ (1 ≤ a ≤ b ≤ H, 1 ≤ c ≤ d ≤ W)$ を選び,$a ≤ x ≤ b,\ c ≤ y ≤ d$ を満たす全てのマス $(x, y)$ にある宝石を拾う.そのとき,以下の条件を満たせば魔法が発動し,JOI 君は次の国際情報オリンピック(IOI)の日本代表になることができるだろう.

「中途半端に拾った」宝石の種類がひとつもない.より具体的には,「1 個以上その種類の宝石を拾ったが,マス目にあるその種類の宝石をすべて拾ってはいない」といった種類の宝石が存在しない.

さて,魔法が発動するような整数 $(a, b, c, d)$ の組の選び方は何通りあるか求めよ.答えは大きくなる場合があるので,64 ビット整数を扱うことを勧める.

制約

  • $1 ≤ T ≤ 5$
  • $1 ≤ H ≤ 1000$
  • $1 ≤ W ≤ 1000$
  • $s_{i,j}$ は A, B, C, D, E, F, G, H, I, J のいずれかである.
  • $s_{i,j}$ 以外の入力は全て整数である.

この課題は,5 個の小課題から成る.

小課題 得点 内容 入力データ番号 $T$ の値
0 - サンプルテストケース #0 -
1 8 $H = 1,\ W ≤ 10$ #1 5
2 14 $H ≤ 10, W ≤ 10$ #2 5
3 20 $H ≤ 55, W ≤ 55$ #3 5
4 21 $s_{i,j}$ は A, B, C のいずれかである. #4 5
5 37 追加の制約はない. #5 5

入力

各入力データについて、以下の形式で入力が与えられる。

T
(1 個目のテストケースの情報)

各テストケースについて、以下の形式で入力が与えられる.

  • 1 行目に,整数 $H,W$ が空白区切りで与えられる.
  • $1 + i (1 ≤ i ≤ W)$ 行目に,$s_{i,1}, s_{i,2}, s_{i,3}, ... , s_{i,W}$ が繋がった $W$ 文字の文字列が与えられる.

出力

$T$ 行に渡って出力せよ.
$i$ 行目には,$i$ 個目のテストケースにおける答えを出力せよ.

入力例 1
2 3 5 ABCDE ABCDE ABCDE 3 8 ABCDEFGH BCDEFGHI CDEFGHIJ
出力例 1
15 3

サンプルケースです

提出
C++23 (g++ 12.2.0)