题目描述
你是一位远近闻名的大法师,你拥有一个药水店,店里有一个容量为 k 单位的炼药锅。
药水店一共经营了 n 天,每天会发生以下的事件恰好一次:
有个初始给定的概率序列 al,al+1…ar,表示 l∼r 被随机选中的概率,保证 ∑ai=1,然后每天会按照 a 带权随机一个整数 i。
如果 i=0,则什么也不干;
如果 i<0,则有一位顾客买走了 −i 单位的药水,你的锅中药水量始终不能小于 0;
如果 i>0,则大法师向锅内加入了 i 单位的药水,如果超过了锅的容量则加到满为止。
同时你还可以在每天结束时决定是否清空炼药锅。(第一天开始前视作清空过炼药锅)。
药水店的顾客很挑剔,如果他们买到的药水的陈旧度超过 m 天,那么他们就会生气。
药水的陈旧度定义为该日炼药锅距离上一次清空过了多少天,例如,昨天结束时刚清空完炼药锅则今日药水的陈旧度为 1(当然,这种情况下今天开始时锅里也没有药水)。
为了维持你的名声,即使某天没有顾客来,你也要保证当天清空前锅里的药水的陈旧度不超过 m。
作为一位大法师,你自然不希望有顾客生气。因此对于接下来 n 天的每一种情况,如果你能在预知每天发生的事件的基础下合理清空炼药锅,使得没有人生气,你就认为这种情况是好的。
即,对于一个确定的事件序列 b1,b2,…,bn(bi 为第 i 天随机到的整数),你认为他发生的概率是 ∏i=1nabi,且你认为他是好的当且仅当存在一种清空炼药锅的方案,使得每天锅里的药水的陈旧度都不超过 m,且所有顾客都买到了他需要的药水量。
现在你想知道这 n 天的情况有多大概率是好的,因为你不喜欢实数,所以你只想知道答案对 998244353 取模的结果。
形式化题意:
给定概率序列 al,al+1,…,ar,保证 ∑ai=1。
考虑所有长为 n 的整数序列 b1,b2,…,bn,满足 bi∈[l,r],定义其出现概率为 ∏iabi。
定义序列 b 是好的,当且仅当存在 c1,c2…,cn,满足 ci∈{0,k},使得数列 si=min(si−1+bi,ci) 所有元素 ≥0,且任意连续 m 项都有一项为 0,其中 s0=0。
求所有好的 b 序列的出现概率之和对 998244353 取模的结果。
输入格式
第一行输入五个整数 n,m,k,l,r。
第二行输入 r−l+1 个整数 al′∼ar′,其中 ai′ 表示实际的 ai 对 998244353 取模的结果,保证 ∑ai′≡1(mod998244353)。
输出格式
输出一行一个数,表示答案对 998244353 取模的结果。
3 2 1 -1 1
499122177 0 499122177
623902721
10 7 7 -2 2
1 2 3 4 998244344
5347454
10000 6000 11451 -3 3
1 9 1 998244325 9 8 1
45917006
120000 100000 114514 -3 3
875253823 187452905 284279374 460346727 51435610 206896725 929067896
206445697
提示
subtask |
n |
r−l+1 |
特殊性质 |
分值 |
1 |
≤10 |
≤7 |
无 |
10 |
2 |
≤100 |
3 |
≤104 |
20 |
4 |
≤1.2×105 |
≤3 |
a−1′=a1′,a0′=0 |
15 |
5 |
无 |
10 |
6 |
≤6×104 |
≤5 |
15 |
7 |
≤1.2×105 |
≤7 |
20 |
对于所有数据:1≤m≤n≤1.2×105,1≤k≤106,−3≤l<0<r≤3,ai′∈[0,998244353),al′,ar′>0,∑ai′≡1(mod998244353)。