QOJ.ac

QOJ

Limite de temps : 4.0 s Limite de mémoire : 1024 MB Points totaux : 100

#10797. 求子矩形的和

Statistiques

考虑一个包含 $H$ 行 $W$ 列方格的矩形棋盘。每个单元格包含一个数字(0–9)或一个星号(“*”)。位于从上往下第 $i$ 行、从左往右第 $j$ 列的单元格记为 $(i, j)$。

在本题中,我们考虑子矩形。子矩形是一组形成矩形的单元格。更准确地说,如果存在四个整数 $t, b, \ell, r$,满足 $1 \le t \le b \le H$,$1 \le \ell \le r \le W$,且 $S = \{(i, j) \mid t \le i \le b \land \ell \le j \le r\}$,则称这组单元格 $S$ 为一个子矩形。如果一个子矩形中的每个单元格都包含数字,则称其为“仅含数字的子矩形”。仅含数字的子矩形的得分定义为该子矩形内所有单元格数字之和的平方。

你的任务是计算所有仅含数字的子矩形的得分之和。由于答案可能很大,请输出其对 $998\,244\,353$ 取模的结果。

输入格式

第一行包含两个整数 $H$ 和 $W$:棋盘的高度和宽度($1 \le H, W \le 2000$)。

接下来的 $H$ 行,每行包含 $W$ 个字符。其中 $A_{i,j}$ 是单元格 $(i, j)$ 中的字符,它要么是 0 到 9 之间的数字,要么是一个星号(“*”)。你可以假设至少存在一个仅含数字的子矩形。

输出格式

输出一行,包含一个整数:所有仅含数字的子矩形的得分之和对 $998\,244\,353$ 取模的结果。

样例

样例输入 1

2 2
44
9*

样例输出 1

346

样例输入 2

2 3
314
28*

样例输出 2

601

样例输入 3

4 6
314159
2*6535
*89793
238*4*

样例输出 3

37655

说明

在样例 1 中,共有五个仅含数字的子矩形,如下图所示。它们的得分之和为 $4^2 + 4^2 + 9^2 + (4 + 4)^2 + (4 + 9)^2 = 346$。

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.