uoj#P137. 【UER #3】开学前的日历
【UER #3】开学前的日历
红包是一个有拖延症的男孩子。
红包由于NOI惨挂心情不好,直到还剩下 $n$ 周的时候他才开始写作业。
由于红包会 “时间静止” 大法,所以红包的一周有 $m$ 天。
现在他把这 $n \times m$ 天排成 $n$ 行 $m$ 列的日历开始计划每天要写的作业量。
初始时每天要做的作业量都是 $0$。
接下来,红包会有 $q$ 个行为,每次都会选择一个红包的形状,把红包内的每一天的作业量增加一个奇怪的组合数。
详细地说,每个行为可以用 $v, u, k$ 表示:对所有的 $i, j$,若满足 $0 \leq i \leq j$ 且 $j \geq k$ 则将第 $v + i$ 周第 $u - i + j$ 天的作业量增加 ${j \choose i}$,即 $j$ 个里面选 $i$ 个的方案数(如果不存在这一天则不执行)。
在所有行为结束后,红包就计划好了每天要做的作业量。
虽然能不能完成是另一回事,但是现在请帮红包算出每天计划要做的作业量。
输入格式
由于本题输入数据很大,所以采取在程序内生成数据的方式。
有一个随机数产生器,有个内部变量 $x$ 初始时为 $x_0$,每次产生随机数时它会将 $x$ 变为 $(100000005x+20150823) \bmod 998244353$,然后返回 $\lfloor \frac{x}{100} \rfloor$。($a \bmod b$ 表示 $a$ 除以 $b$ 的余数,该运算的优先级高于加减法。$\lfloor \alpha \rfloor$ 表示 $\alpha$ 向下取整后的结果。)
输入文件共一行,包含四个整数 $n, m, q, x_0$。保证 $n, m, q \geq 1$,$0 \leq x_0 < 998244353$。
每次,你需要按顺序产生三个随机数 $\hat{v}, \hat{u}, \hat{k}$,然后令 $v = \hat{v} \bmod n + 1$,$u = \hat{u} \bmod m + 1$,$k = \hat{k} \bmod (n + m - v - u + 1)$,表示一个行为。你需要重复该过程 $q$ 次来获得所有行为的参数。
输出格式
共 $n$ 行,每行 $m$ 个整数,其中第 $i$ 行第 $j$ 个整数表示第 $i$ 周第 $j$ 天要做的作业量。你只用输出答案对 $998244353$ 取模后的结果。
3 2 2 1234
0 0
1 1
1 4
两次操作分别为:$(2, 1, 2)$ 和 $(2, 1, 0)$。
10 10 20 5678
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 6 7
0 0 0 0 0 0 0 16 22 30
0 0 0 0 1 1 26 42 72 104
0 1 2 3 4 30 56 126 198 1227
0 1 4 7 27 58 170 296 1293 4522
0 1 5 18 48 176 346 1153 5449 9971
0 1 7 28 133 309 895 5480 10929 20908
限制与约定
测试点编号 | $n, m$ 的规模 | $q$ 的规模 |
---|---|---|
1 | $n, m \leq 10$ | $q \leq 10$ |
2 | $n, m \leq 100$ | $q \leq 100$ |
3 | $n, m \leq 30$ | $q \leq 5 \times 10^6$ |
4 | $n, m \leq 100$ | |
5 | ||
6 | $n, m \leq 300$ | $q \leq 2 \times 10^6$ |
7 | ||
8 | $q \leq 5 \times 10^6$ | |
9 | ||
10 |
时间限制:$1\texttt{s}$
空间限制:$512\texttt{MB}$