#P10236. [yLCPC2024] D. 排卡

[yLCPC2024] D. 排卡

题目背景

经过千辛万苦,扶苏终于到达了机厅。但是她很快发现机厅排起了大 b 队 (不是省选的 B 队)

舞萌玩家们在人多的时候经常采取排卡的方式决定谁下一个上机。因为人实在是太多了,他们在排卡的时候,便注意到了卡上的编号。

他们向扶苏提了一个问题,你能解决吗?

题目描述

扶苏有一个双端队列 aa。这个队列与计算机科学中队列的概念类似,不同的是,这个队列既可以从队列头读取和弹出元素,也可以在队列尾部读取和弹出元素,因此被称为『双端队列』。

这个队列中有 nn 个数。扶苏将通过 nn 次操作构造一个长度为 nn 的序列 bb,第 ii1in1 \leq i \leq n)次操作会可以进行如下两个过程之一:

  1. bib_iaa 的队列头,并在 aa 的头部弹出一个元素。
  2. bib_iaa 的队列尾,并在 aa 的尾部弹出一个元素。

我们定义一个数对 (i,j)(i, j) 的得分为:

score(i,j)=ijmod998244353\mathrm{score}(i,j) = i^j \bmod 998244353

iijj 次幂对 998244353998244353 取余数的结果。特别的,在本题中我们规定 00=00^0 = 0

现在,扶苏想用最优的策略构造 bb 序列,最大化如下式子的值:

$$\sum_{i = 1}^{n - 1} \mathrm{score}(b_i, b_{i + 1}) $$

bb 所有相邻两项按原顺序计算的得分之和。

注意,我们仅在计算一个数对的时候将得分对 998,244,353998,244,353 取模,在计算求和时不再将这个和取余。

输入格式

本题单个测试点内有多组测试数据。第一行是一个正整数,表示数据组数 TT。对每组数据:

第一行是一个整数 nn2n1032 \leq n \leq 10^3),表示序列的长度。
第二行有 nn 个整数 a1,a2,ana_1, a_2, \dots a_n0ai<998,244,3530 \leq a_i < 998,244,353),按从头到尾的顺序表示队列 aa 里每个数字的值。

数据保证单个测试点内 nn 的和不超过 10310^3

输出格式

对每组测试数据,输出一行一个整数表示答案。

2
5
5 3 1 4 2
6
6 5 1 4 2 3
1168
15655