3758: 我是 D 题(第六轮04)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:4 解决:1

题目描述

若有一个长度为 n  的数列 {an } 满足 ∀ai   ∈ [1, m],定义 f({an }) 为数列中所有 极长相等子段长度的平方和。

现在给出长度为 n  的数列 {bn },满足  ∀bi    ∈ [0, m] bi  = 0  表示  bi 的取值在 [1, m]中均匀随机。

 q  次操作,每次修改数列  {bn }   中的一个值,或者询问  f({bl ~r  })   的值对 998244353  取模后的结果。

输入

第一行三个正整数 n, m, q 。

第二行 n  个正整数表示序列  {bn } 。  接下来 q  行,每行第一个数为 opt。

- 若 opt = 1,则接下来给出两个整数 p, x,表示将  bp 修改为 x 。

-  若 opt = 2 ,则 接下来给 出两个整 数  l, r ,表 示询问  f({bl ~r  })    的值 对 998244353  取模后的结果。

输出

请你对每个 opt = 2  的操作给出对应的答案。

样例输入 复制

10 10 3
1 2 5 3 0 0 2 2 0 1
2 2 9
1 5 4
2 1 10

样例输出 复制

205638348
259543545

提示

【数据范围】

对于前  10%  的数据,保证 n, m ≤ 7, q ≤ 5000。 

对于接下来  15%  的数据,保证 n, m, q ≤ 600 。 

对于接下来  15%  的数据,保证 m = 2。

对于接下来  10%  的数据,保证 q  =  1, ∀i, bi    = 0。 

对于接下来  10%  的数据, q = 1。

对于接下来 20%  的数据, l = 1, r = n。

对于   100%    的 数据,保 证  n, q ≤ 5 × 1^05  ,1 ≤ m ≤ 998244352,1 ≤ p, l, r ≤ n, 0 ≤ x ≤ 998244352。

来源/分类