CF1603C.Extreme Extension

提高+/省选-

通过率:0%

时间限制:4.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

For an array bb of nn integers, the extreme value of this array is the minimum number of times (possibly, zero) the following operation has to be performed to make bb non-decreasing:

  • Select an index ii such that 1≤i≤∣b∣1 \le i \le |b|, where ∣b∣|b| is the current length of bb.
  • Replace bib_i with two elements xx and yy such that xx and yy both are positive integers and x+y=bix + y = b_i.
  • This way, the array bb changes and the next operation is performed on this modified array.

For example, if b=[2,4,3]b = [2, 4, 3] and index 22 gets selected, then the possible arrays after this operation are [2,1‾,3‾,3][2, \underline{1}, \underline{3}, 3], [2,2‾,2‾,3][2, \underline{2}, \underline{2}, 3], or [2,3‾,1‾,3][2, \underline{3}, \underline{1}, 3]. And consequently, for this array, this single operation is enough to make it non-decreasing: [2,4,3]→[2,2‾,2‾,3][2, 4, 3] \rightarrow [2, \underline{2}, \underline{2}, 3].

It's easy to see that every array of positive integers can be made non-decreasing this way.

YouKn0wWho has an array aa of nn integers. Help him find the sum of extreme values of all nonempty subarrays of aa modulo 998 244 353998\,244\,353. If a subarray appears in aa multiple times, its extreme value should be counted the number of times it appears.

An array dd is a subarray of an array cc if dd can be obtained from cc by deletion of several (possibly, zero or all) elements from the beginning and several (possibly, zero or all) elements from the end.

对于一个包含 nn 个整数的数组 bb,该数组的极值(extreme value)定义为:使其变为非递减数组所需执行以下操作的最少次数(可以为零次):

  • 选择一个下标 ii,满足 1≤i≤∣b∣1 \le i \le |b|,其中 ∣b∣|b| 表示当前数组 bb 的长度;
  • 将 bib_i 替换为两个正整数 xx 和 yy,使得 x+y=bix + y = b_i;
  • 经此操作后,数组 bb 发生变化,后续操作在该修改后的数组上进行。

例如,若 b=[2,4,3]b = [2, 4, 3] 且选中下标 22,则此次操作后可能得到的数组为 [2,1‾,3‾,3][2, \underline{1}, \underline{3}, 3]、[2,2‾,2‾,3][2, \underline{2}, \underline{2}, 3] 或 [2,3‾,1‾,3][2, \underline{3}, \underline{1}, 3]。因此,对这个数组,仅需一次操作即可使其非递减:[2,4,3]→[2,2‾,2‾,3][2, 4, 3] \rightarrow [2, \underline{2}, \underline{2}, 3]。

显然,任意由正整数组成的数组均可通过上述方式变为非递减数组。

YouKn0wWho 拥有一个长度为 nn 的整数数组 aa。请帮助他计算 aa 的所有非空子数组的极值之和,并对 998 244 353998\,244\,353 取模。若某个子数组在 aa 中多次出现,则其极值应按其出现次数累加。

数组 dd 是数组 cc 的子数组(subarray),当且仅当 dd 可通过从 cc 的开头删除若干个(可以为零个或全部)元素、并从 cc 的末尾删除若干个(可以为零个或全部)元素而得到。

输入格式

The first line contains a single integer tt (1≤t≤10 0001 \le t \le 10\,000) — the number of test cases.

The first line of each test case contains a single integer nn (1≤n≤1051 \le n \le 10^5).

The second line of each test case contains nn integers a1,a2,…,ana_1, a_2, \ldots, a_n (1≤ai≤1051 \le a_i \le 10^5).

It is guaranteed that the sum of nn over all test cases doesn't exceed 10510^5.

第一行包含一个整数 tt(1≤t≤10 0001 \le t \le 10\,000)—— 表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(1≤n≤1051 \le n \le 10^5)。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1051 \le a_i \le 10^5)。

保证所有测试用例的 nn 之和不超过 10510^5。

输出格式

For each test case, print a single integer — the sum of extreme values of all subarrays of aa modulo 998 244 353998\,244\,353.

对于每个测试用例,输出一个整数——数组 aa 的所有子数组的极值之和对 998 244 353998\,244\,353 取模的结果。

输入输出样例

  • 输入#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)f(l, r) denote the extreme value of [al,al+1,…,ar][a_l, a_{l+1}, \ldots, a_r].

In the first test case,

  • f(1,3)=3f(1, 3) = 3, because YouKn0wWho can perform the following operations on the subarray [5,4,3][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][5, 4, 3] \rightarrow [\underline{3}, \underline{2}, 4, 3] \rightarrow [3, 2, \underline{2}, \underline{2}, 3] \rightarrow [\underline{1}, \underline{2}, 2, 2, 2, 3];

  • f(1,2)=1f(1, 2) = 1, because [5,4]→[2‾,3‾,4][5, 4] \rightarrow [\underline{2}, \underline{3}, 4];

  • f(2,3)=1f(2, 3) = 1, because [4,3]→[1‾,3‾,3][4, 3] \rightarrow [\underline{1}, \underline{3}, 3];

  • f(1,1)=f(2,2)=f(3,3)=0f(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=5a = 3 + 1 + 1 + 0 + 0 + 0 = 5.

令 f(l,r)f(l, r) 表示子数组 [al,al+1,…,ar][a_l, a_{l+1}, \ldots, a_r] 的极值。

在第一个测试用例中,

  • f(1,3)=3f(1, 3) = 3,因为 YouKn0wWho 可对子数组 [5,4,3][5, 4, 3](新插入的元素用下划线标出)执行如下操作:

    [5,4,3]→[3‾,2‾,4,3]→[3,2,2‾,2‾,3]→[1‾,2‾,2,2,2,3][5, 4, 3] \rightarrow [\underline{3}, \underline{2}, 4, 3] \rightarrow [3, 2, \underline{2}, \underline{2}, 3] \rightarrow [\underline{1}, \underline{2}, 2, 2, 2, 3];

  • f(1,2)=1f(1, 2) = 1,因为 [5,4]→[2‾,3‾,4][5, 4] \rightarrow [\underline{2}, \underline{3}, 4];

  • f(2,3)=1f(2, 3) = 1,因为 [4,3]→[1‾,3‾,3][4, 3] \rightarrow [\underline{1}, \underline{3}, 3];

  • f(1,1)=f(2,2)=f(3,3)=0f(1, 1) = f(2, 2) = f(3, 3) = 0,因为这些单元素子数组本身已为非递减序列。

因此,数组 aa 的所有子数组的极值之和为 3+1+1+0+0+0=53 + 1 + 1 + 0 + 0 + 0 = 5。

输入解题思路,AI测评打分。不知道怎么写?

首页