CFCF2204F.Sum of Fractions
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
我们称对分数 yx 的一次增加操作为以下两种操作之一:
- 将分子的 x 增加 1;
- 或者,如果分母 y>1,将分母 y 减少 1。
注意,进行增加操作后,分数不需要约分。例如,如果你有分数 73 并将分母减少 1,结果应为 63,而不是 21。
现在,给定一个整数数组 b1,b2,…,bm 和一个整数 k。我们执行如下算法:
- 构造数组 b11,b21,…,bm1。
- 任意选择一个分数并对其执行一次“增加”操作。
- 重复上一步,重复 k 次(同一个分数允许被多次选择)。
- 计算最终所有分数的和。
我们定义 MSF(b,k) 为:对数组 b 执行恰好 k 次“增加”操作后,所有分数和的最大值。
记 a[l…r] 表示数组 a 的子区间 al,al+1,…,ar。
现给定两个整数数组 a1,a2,…,an 和 k1,k2,…,km。对于每个 ki,计算
(l=1∑nr=l∑nMSF(a[l…r],ki))mod998244353.
换句话说,对于每个 ki,计算数组 a 的所有子区间的 MSF 的和,并输出结果模 998244353。
输入格式
第一行包含两个整数 n 和 m(1≤n,m≤5⋅105),分别表示数组 a 和 k 的长度。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤108),表示数组 a。
第三行包含 m 个整数 k1,k2,…,km(0≤k1≤k2≤⋯≤km≤108),表示按非递减顺序排列的数组 k。
输出格式
对于每个 ki,输出一个整数,表示所有子区间的 MSF 之和模 998244353 的结果。
可以证明,每个答案都可表示为既约分数 QP,其中 Q≡0(mod998244353)。因此,输出形式为 P⋅Q−1(mod998244353)。
输入输出样例
输入#1
5 4 2 3 5 2 3 0 1 2 10
输出#1
232923695 332748137 931694761 133099397
说明/提示
对于给定的 k,对应答案依次为:30379、358、15473 和 152249。