UOJ Logo Universal Online Judge

UOJ

#918. 【UR #28】偷吃蛋糕

附件下载 统计

看起来 UOJ 正在举办十周年庆典!只要通过完成挑战,收集到宝贵的比特,就可以兑换奖品!

其中一项挑战是吃十周年大蛋糕!蛋糕有 $n$ 层,第 $i$ 层大小是 $c_i$,为了防止蛋糕倒塌,保证 $c$ 单调不增。

作为挑战者,主办方初始会将第 $1$ 层蛋糕给你,在挑战的过程中,将会把剩下的蛋糕按照标号从小到大的顺序根据规则依次给你。你会重复如下操作,直到手上没有蛋糕:

  • 吃掉你已有的最大的一层蛋糕,假设吃掉的这层蛋糕的大小为 $x$。
  • 如果主办方有至少 $x$ 层蛋糕,主办方会按照顺序,将接下来的 $x$ 层蛋糕 转交 给你。
  • 否则如果主办方的蛋糕不足 $x$ 层,只有 $y$ 层,那么主办方会将剩余的蛋糕全部 转交 给你,并补偿你 $x-y$ 个比特。

似乎如果这样,那么所有的挑战者都可以吃到所有的蛋糕,并获得一样的比特!真是其乐融融!但是谁都没有注意到,一只爱吃蛋糕的小老鼠,也偷偷溜进了庆典!

偷吃蛋糕

由于这只小老鼠过于喜欢吃蛋糕,每当主办方想要将至少一层蛋糕 转交 给你的时候,这只小老鼠都会突然出现并随机抢走其中的一块即将 转交 给你的蛋糕!

为了挑战最终谜题,现在你作为挑战者想知道,你在这次游戏中期望能获得多少个比特呢?答案对 $998244353$ 取模。

输入格式

第一行输入一个正整数 $n$。

第二行输入 $n$ 个单调不增的正整数 $c_1, c_2, \dots, c_n$。

输出格式

一行一个整数,表示答案对 $998244353$ 取模后的余数。

样例一

input

3
1 1 1

output

0

explanation

在你吃完第一层蛋糕后,当主办方将第二层蛋糕转交给你的过程中,小老鼠偷走了第二层蛋糕,因此你无法吃完所有蛋糕,也无法获得比特。

样例二

input

5
3 3 2 1 1

output

3

explanation

在你吃完第一层蛋糕后,主办方将第 $2$ 到 $4$ 层蛋糕转交给你的过程中,小老鼠会随机偷走这三层中的一层。下一次转交蛋糕必然是只转交最后一层,因此最后一层蛋糕也必然会被小老鼠偷走,偷取第 $2, 3, 4$ 层蛋糕则分别可以获得 $2, 3, 4$ 个比特,因此期望可以获得 $3$ 个比特。

样例三

input

18
5 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1

output

199648871

样例四~八

见附件下载。

限制与约定

对于所有数据,保证 $1 \leq n \leq 2000$,$1 \leq c_i \leq n$,且 $c$ 单调不增。

子任务编号 $n \leq $ $c_1 \leq $ 分值
$1$ $18$ $18$ $10$
$2$ $50$ $50$ $15$
$3$ $200$ $20$ $10$
$4$ $500$ $500$ $15$
$5$ $1000$ $22$ $20$
$6$ $2000$ $2000$ $30$

时间限制:$0.6\texttt{s}$

空间限制:$512\texttt{MB}$