题目背景
翻译自 ROI 2019 D2T3。
在“机器人奥林匹克运动会”中,有一个“机器人高尔夫比赛”。比赛场地是一个由 n×m 个单位方块组成的矩形。场地的行用数字 1 到 n 编号,列用数字 1 到 m 编号。每个单位方块由两个正整数 r 和 c 表示,分别代表它所在的行和列的编号。
两个机器人轮流在场地上移动一个特殊的“高尔夫球”,场地的某些方块上可能有洞。如果“高尔夫球”位于方块 (r,c) 上,执行当前操作的机器人可以将其移动到方块 (r+1,c) 或方块 (r,c+1)。如果“高尔夫球”位于最后一行或最后一列,机器人可以将其移动到场地的边界外。游戏会在以下两种情况下结束:“高尔夫球”超出了场地的边界,或者“高尔夫球”落到一个洞里。
每个洞对应一个整数 vi,表示它的价值。游戏的结果等于游戏结束时“高尔夫球”所在洞的价值,如果“高尔夫球”超出了场地的边界,则结果为 0。先手机器人的目标是最小化游戏结果,而后手机器人的目标是最大化游戏结果。
题目描述
假设 g(r,c) 表示当“高尔夫球”初始位于方块 (r,c) 时,先手机器人不论对手怎么行动都可以达到的最小游戏结果。由于比赛开始前不知道初始方块,机器人开发者想要计算出所有格子对应的 g(r,c) 的总和,即 i=1∑nj=1∑mg(i,j)。
输入格式
第一行包含三个整数 n,m,k,分别表示行数、列数和洞的个数。
接下来的 k 行,每行包含三个整数 ri,ci,vi,分别表示洞所在的行、列编号和洞的价值。没有两个洞会位于同一个方块上。
输出格式
输出一个整数,表示 i=1∑nj=1∑mg(i,j)mod998244353。注意:输出的结果应该在 0 和 998244352 之间,而不是在 −998244352 和 998244352 之间。
提示
样例解释:
第一个样例中,所有方格的 g(r,c) 如下(灰色的格子有洞):

总结果求和为:1+1−2+0−2−2+3+0+0=−1。答案为 (−1)mod998244353=(−1+998244353)=998144352。
第二个样例中,所有方格的 g(r,c) 如下:

总结果求和为:1+2+0−3+1+0−3−3=−5。答案为 (−5)mod998244353=998244348。
数据范围:
子任务 |
分值 |
n,m,k |
其它特殊性质 |
1 |
20 |
n,m≤1000 |
|
2 |
14 |
n≤5,m≤109 |
3 |
n,m≤100000,k=n+m−1 |
A |
4 |
10 |
|
B |
5 |
6 |
n,m≤100000 |
C |
6 |
|
7 |
10 |
n,m≤100000 |
|
8 |
k≤1000 |
9 |
|
特殊性质 A:对于任意 i,ri=n 或 ci=m。
特殊性质 B:对于任意 i,ri≥n−1000 且 ci≥m−1000。
特殊性质 C:对于任意 i,vi=1。
对于 100% 的数据,1≤n,m≤109,1≤k≤min(n×m,105),1≤ri≤n,1≤ci≤m,∣vi∣≤109。