#783. Count

    ID: 783 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 4 上传者: 标签>动态规划线性DP数学逆元基础算法前缀和

Count

题目描述

给定一个长度为 nn 的序列 AA,现在你需要将这个序列划分为若干个区间(可以只划分为一个),要求每个区间的左端点 ll 和右端点 rr 都满足 Al=ArA_l=A_r,其中 ll 可以等于 rr

令这样一种合法划分的贡献为所有非空区间内元素的乘积之和(若区间内只有一个元素,那么认为这个区间内元素的乘积为这个元素的值)。 求所有合法划分的贡献之和对 998244353998244353 取模的值。

输入格式

共两行。

  • 第一行一个正整数 nn,表示序列长度。

  • 第二行 nn 个正整数,表示序列 AA

输出格式

共一行一个整数,表示所有合法划分的贡献之和对 998244353998244353 取模的值。

样例输入1

4
1 2 2 1

样例输出1

16

样例输入2

6
1 2 2 1 2 2

样例输出2

104

说明

样例解释

对于样例一中的序列 1,2,2,1\langle1,2,2,1\rangle 共存在三种合法划分:

  • 划分为 44 个区间,分别为 [1,1][1,1][2,2][2,2][3,3][3,3][4,4][4,4],贡献为 1+2+2+1=61+2+2+1=6
  • 划分为 33 个区间,分别为 [1,1][1,1][2,3][2,3][4,4][4,4],贡献为 1+2×2+1=61+2\times2+1=6
  • 划分为 11 个区间,为 [1,4][1,4],贡献为 1×2×2×1=41\times2\times2\times1=4

所以总贡献的和为 6+6+4=166+6+4=16

数据范围

子任务编号 nn AiA_i
121\sim2 10\le10 3\le3
363\sim6 103\le10^3 40\le40
7127\sim12 2.5×105\le2.5\times10^5 2\le2
132013\sim20 2.5×105\le2.5\times10^5 40\le40

对于 100%100\% 的数据,保证 1n2.5×1051\le n\le2.5\times10^51Ai401\le A_i\le40