#CF2078G. 另一种折叠纸条

    ID: 6369 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>组合数学其他构造数据结构动态规划贪心分治数论*2700

另一种折叠纸条

E. 另一种折叠纸条
每次测试的时间限制:2 秒
每次测试的内存限制:256 兆字节

对于一个长度为 mm 的数组 bb,定义 f(b)f(b) 如下:

考虑一个 1×m1 \times m 的纸条,初始时所有格子的暗度为 00
你想把它变成第 ii 个位置的暗度为 bib_i 的纸条。
你可以进行如下操作,每次操作包含两步:

  1. 在任意两个格子之间的线处折叠纸条。你可以折叠任意多次,也可以不折叠。
  2. 选择一个位置滴下黑色染料。染料从顶部渗透到底部,使其路径上的所有格子的暗度增加 11。滴完染料后,你将纸条展开。

f(b)f(b) 为达到目标配置所需的最少操作次数。可以证明,目标总是可以在有限次操作内实现。

现在给你一个长度为 nn 的数组 aa。计算

$$\sum_{l=1}^{n} \sum_{r=l}^{n} f(a_l a_{l+1} \dots a_r) $$

并对 998244353998244353 取模。

输入
每个测试点包含多个测试用例。第一行包含测试用例数 tt1t1041 \le t \le 10^4)。
接下来每个测试用例的描述如下:

  • 第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5)——数组 aa 的长度。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n0ai1090 \le a_i \le 10^9)——数组 aa 的元素。

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出
对于每个测试用例,输出一个整数 —— 所需的和模 998244353998244353 的结果。

示例
输入:

4
3
0 1 0
6
1 0 0 1 2 1
5
2 1 2 4 3
12
76 55 12 32 11 45 9 63 88 83 32 6

输出:

4
28
47
7001

注意
在第一个测试用例中:

  • f(a1)=f(0)=0f(a_1) = f(0) = 0
  • f(a1a2)=f(01)=1f(a_1 a_2) = f(01) = 1
  • f(a1a2a3)=f(010)=1f(a_1 a_2 a_3) = f(010) = 1
  • f(a2)=f(1)=1f(a_2) = f(1) = 1
  • f(a2a3)=f(10)=1f(a_2 a_3) = f(10) = 1
  • f(a3)=f(0)=0f(a_3) = f(0) = 0

总和为 0+1+1+1+1+0=40+1+1+1+1+0 = 4

在第二个测试用例中,f(a1a2a3a4a5a6)=2f(a_1 a_2 a_3 a_4 a_5 a_6) = 2。这里给出了一种可能的操作序列(省略)。