CF1603C.Extreme Extension
提高+/省选-
通过率:0%
时间限制:4.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
For an array b of n integers, the extreme value of this array is the minimum number of times (possibly, zero) the following operation has to be performed to make b non-decreasing:
- Select an index i such that 1≤i≤∣b∣, where ∣b∣ is the current length of b.
- Replace bi with two elements x and y such that x and y both are positive integers and x+y=bi.
- This way, the array b changes and the next operation is performed on this modified array.
For example, if b=[2,4,3] and index 2 gets selected, then the possible arrays after this operation are [2,1,3,3], [2,2,2,3], or [2,3,1,3]. And consequently, for this array, this single operation is enough to make it non-decreasing: [2,4,3]→[2,2,2,3].
It's easy to see that every array of positive integers can be made non-decreasing this way.
YouKn0wWho has an array a of n integers. Help him find the sum of extreme values of all nonempty subarrays of a modulo 998244353. If a subarray appears in a multiple times, its extreme value should be counted the number of times it appears.
An array d is a subarray of an array c if d can be obtained from c by deletion of several (possibly, zero or all) elements from the beginning and several (possibly, zero or all) elements from the end.
对于一个包含 n 个整数的数组 b,该数组的极值(extreme value)定义为:使其变为非递减数组所需执行以下操作的最少次数(可以为零次):
- 选择一个下标 i,满足 1≤i≤∣b∣,其中 ∣b∣ 表示当前数组 b 的长度;
- 将 bi 替换为两个正整数 x 和 y,使得 x+y=bi;
- 经此操作后,数组 b 发生变化,后续操作在该修改后的数组上进行。
例如,若 b=[2,4,3] 且选中下标 2,则此次操作后可能得到的数组为 [2,1,3,3]、[2,2,2,3] 或 [2,3,1,3]。因此,对这个数组,仅需一次操作即可使其非递减:[2,4,3]→[2,2,2,3]。
显然,任意由正整数组成的数组均可通过上述方式变为非递减数组。
YouKn0wWho 拥有一个长度为 n 的整数数组 a。请帮助他计算 a 的所有非空子数组的极值之和,并对 998244353 取模。若某个子数组在 a 中多次出现,则其极值应按其出现次数累加。
数组 d 是数组 c 的子数组(subarray),当且仅当 d 可通过从 c 的开头删除若干个(可以为零个或全部)元素、并从 c 的末尾删除若干个(可以为零个或全部)元素而得到。
输入格式
The first line contains a single integer t (1≤t≤10000) — the number of test cases.
The first line of each test case contains a single integer n (1≤n≤105).
The second line of each test case contains n integers a1,a2,…,an (1≤ai≤105).
It is guaranteed that the sum of n over all test cases doesn't exceed 105.
第一行包含一个整数 t(1≤t≤10000)—— 表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤105)。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤105)。
保证所有测试用例的 n 之和不超过 105。
输出格式
For each test case, print a single integer — the sum of extreme values of all subarrays of a modulo 998244353.
对于每个测试用例,输出一个整数——数组 a 的所有子数组的极值之和对 998244353 取模的结果。
输入输出样例
输入#1
4 3 5 4 3 4 3 2 1 4 1 69 8 7264 40515 28226 92776 35285 21709 75124 48163
输出#1
5 9 0 117
说明/提示
Let f(l,r) denote the extreme value of [al,al+1,…,ar].
In the first test case,
-
f(1,3)=3, because YouKn0wWho can perform the following operations on the subarray [5,4,3] (the newly inserted elements are underlined):
[5,4,3]→[3,2,4,3]→[3,2,2,2,3]→[1,2,2,2,2,3];
-
f(1,2)=1, because [5,4]→[2,3,4];
-
f(2,3)=1, because [4,3]→[1,3,3];
-
f(1,1)=f(2,2)=f(3,3)=0, because they are already non-decreasing.
So the total sum of extreme values of all subarrays of a=3+1+1+0+0+0=5.
令 f(l,r) 表示子数组 [al,al+1,…,ar] 的极值。
在第一个测试用例中,
-
f(1,3)=3,因为 YouKn0wWho 可对子数组 [5,4,3](新插入的元素用下划线标出)执行如下操作:
[5,4,3]→[3,2,4,3]→[3,2,2,2,3]→[1,2,2,2,2,3];
-
f(1,2)=1,因为 [5,4]→[2,3,4];
-
f(2,3)=1,因为 [4,3]→[1,3,3];
-
f(1,1)=f(2,2)=f(3,3)=0,因为这些单元素子数组本身已为非递减序列。
因此,数组 a 的所有子数组的极值之和为 3+1+1+0+0+0=5。
输入解题思路,AI测评打分。不知道怎么写?