#P11079. 「FSLOI Round I」山峦

    ID: 10494 Type: RemoteJudge 500ms 512MiB Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>动态规划,dp洛谷原创O2优化洛谷月赛

「FSLOI Round I」山峦

题目背景

English statement. You must submit your code at the Chinese version of the statement.

山峦是造物主弃的酒杯。

题目描述

如果一个长度至少为三的序列 aa 满足以下条件,则称其为一个山峰

  • 设其长度为 mm。存在一个 xx,满足 2xm12\leq x \leq m-1,并且使得 a1,a2,,axa_1,a_2,\cdots,a_x 严格单调递增,ax,ax+1,,ama_x,a_{x+1},\cdots,a_m 严格单调递减。

特别地,称 axa_x 为这个山峰的高度。

如果一个序列 bb 满足以下任一条件,则称其为一个山峦

  • bb 序列是一个山峰

  • 可以拆成至少两个连续的子序列,使得每个子序列都是山峰,且从左到右山峰的高度严格单调递增。

比如,序列 {2,4,3,1,5,2,1}\lbrace 2,4,3,1,5,2,1 \rbrace 是山峦,因为其可以拆分为 {2,4,3},{1,5,2,1}\lbrace 2,4,3 \rbrace,\lbrace 1,5,2,1 \rbrace 两个山峰,且山峰高度严格递增。而序列 {2,4,3,5,2,1}\lbrace 2,4,3,5,2,1 \rbrace 不是山峦,因为其无法拆分成至少两个连续的子序列,使得每个子序列都是山峰。

现在给定一个长度为 nn 的序列 aa,小 F 想知道,在 aa 的所有子序列中,有多少个是山峦。由于答案可能很大,请输出其对 998244353998244353 取余后的结果。

请注意,在本题中,即使子序列的元素相同,只要子序列的元素在 aa 中的位置不同,仍算作不同的子序列。

输入格式

共两行。

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

第二行 nn 个整数 a1,a2,,ana_1,a_2,\cdots,a_n,表示 aa 序列。

输出格式

共一行。

一个整数,表示是山峦的子序列数量对 998244353998244353 取余的结果。

4
1 2 2 1
2
7
2 4 3 1 5 2 1
35
20
2 3 5 6 8 7 6 5 6 7 8 8 8 8 4 3 5 6 7 4
15085

提示

【样例 1 解释】

a1,a2,a4a_1,a_2,a_4 构成的子序列是山峦,由 a1,a3,a4a_1,a_3,a_4 构成的子序列是山峦。

【数据规模与约定】

本题采用捆绑测试。

对于 100%100 \% 的数据,保证:

  • 1n5001 \leq n \leq 500
  • 1ai1061 \leq a_i \leq 10^6
子任务 分值 特殊性质
11 1010 n18n \leq 18
22 1515 n80n \leq 80
33 AA
44 2020 BB
55 4040

特殊性质 AA:序列 aa 是山峰。

特殊性质 BB:序列 aa 中的元素互不相同。