题目背景
English Statement.
可爱的松鼠跑去学 PhO 啦。
题目描述
有 n 个放射性原子要进行 k 秒的裂变反应。如果在第 t 秒开始时原子 i 被 b (b>0) 个中子轰击了,那它就会在第 t 秒内释放 ai+b 单位能量,并向编号为 xi,1,xi,2,…,xi,ai 的所有原子各释放 1 个中子。这样,在第 t+1 秒开始时分别击中的 xi,1,xi,2,…,xi,ai 的中子数量都将增加 1(如果 t=k,即这是最后一秒,那么被轰击的原子不会释放中子)。如果在这一秒开始时某个原子没被中子击中,则其不会释放能量与中子。
每一秒开始时,编号为 v1,v2,…,vm 的原子都会被 1 个中子轰击。那么,从第 1 秒开始,到第 k 秒的终止时刻为止,每个原子会释放多少能量?
答案对 998244353 取模!
输入格式
第一行三个整数 n,k,m,表示原子的个数,反应的时间与每一秒开始时被轰击的原子数。
接下来一行 m 个整数 v1,v2,…,vm。
接下来 n 行输入每个原子的信息,格式如下:
第 i 行 ai+1 个整数,第一个数为 ai,接下来 ai 个数 xi,1,xi,2,…,xi,ai。
输出格式
输出 1 行,共 n 个数,第 i 个数是原子 i 从第 1 秒开始,到第 k 秒的终止时刻为止释放的总能量,答案对 998244353 取模。
3 3 1
1
1 2
1 3
1 1
6 4 2
3 1000000000000000000 1
1
1 2
1 3
1 1
151723985 433897441 433897439
提示
样例 #1 解释:
- 第一秒,原子 1 被 1 个中子轰击,释放 1 中子到原子 2,释放 2 能量。
- 第二秒,原子 1 被 1 个中子轰击,释放 1 中子到原子 2,释放 2 能量。同时原子 2 被 1 个中子轰击,释放 1 个中子到原子 3,释放 2 能量。
- 第三秒,原子 1 被 1 个中子轰击,释放 2 能量。同时原子 2 被 1 个中子轰击,释放 2 能量。同时原子 3 被 1 个中子轰击,释放 2 能量。
所以原子 1 共释放了 6 能量,原子 2 释放了 4 能量,原子 3 释放了 2 能量。
数据范围
子任务 |
分值 |
限制 |
0 |
5 |
m=n,vi=i,ai=1,xi,1=1 |
1 |
10 |
m=1,v1=1,ai=1,xi,1=(imodn)+1 |
2 |
20 |
n,∑ai≤103,1≤k≤106 |
3 |
30 |
1≤k≤106 |
4 |
35 |
- |
对于所有数据,$1\le m\le n\le 5\times10^5,1\le \sum a_i\le5\times10^5$,1≤k≤1018,0≤ai≤5×105,且 v1,v2,…,vm 互不相同且是 [1,n] 内的整数,xi,1,xi,2,…,xi,ai 互不相同且是 [1,n] 内的整数。
本题输入量较大,请使用较快的 I/O 方式。