No.1368 サイクルの中に眠る門松列
タグ : / 解いたユーザー数 132
作問者 : mai / テスター : first_vil
定義
3つの要素から成る数列$v = (a_1,a_2,a_3)$が次の条件を満たす時、$v$は門松列であると言い伝えられています。
- $a_1,a_2,a_3$は全て異なる
- 3つの要素のうち$a_2$が最も大きい、あるいは最も小さい
問題文
$N$ 個の整数 $A_1,\ldots,A_N$ が時計回りに円状に並んでいます。
円の中心から見て $A_i$ の右隣は $A_{i+1}$ です。また、$A_N$ の右隣は $A_1$ です。
ある連続する3要素を元の順序で並べた列が門松列であるならば、それらをグループにすることができます。
各要素が属することができるのは高々1つのグループであり、2つ以上のグループに属することはできません。
ここで、グループの評価値を3要素のうち円の中心から見て左端の整数の値とします。
適切にグループを作成したときのグループの評価値の総和の最大値を出力してください。
なお、グループを作成しない場合、グループの評価値の総和は $0$ とします。
入力
1つの入力に複数のテストケースが含まれる場合があります。
1行目にテストケースの個数 $T$ が与えられます。
続く各2行ごとに、各テストケースが与えられます。
$T$ $N_1$ $A_{1,1}\ \ldots\ A_{1,N_1}$ $\vdots$ $N_T$ $A_{T,1}\ \ldots\ A_{T,N_T}$
$1 \le T \le 2\times 10^4$
$3 \le N_j \le 2\times 10^5$
$1\le A_{j, i} \le 2\times 10^5$
$\sum_{j\in 1\ldots T}N_j \le 2\times 10^5$
入力に含まれる値はすべて整数である。
出力
各テストケースにおけるグループの評価値の総和の最大値を改行区切りで出力してください。
最後に改行してください。
サンプル
サンプル1
入力
3 3 1 2 3 6 2 1 99 2 3 1 4 1 1 1 1
出力
3 99 0
1つ目のテストケースでは、[3 1 2]
とグルーピングすることで最大値 $3$ を得ることができます。
[2 3 1]
とグルーピングすることもできますが、この場合の評価値の総和は $2$ であるため最適解ではありません。
2つ目のテストケースでは、[99 2 3]
とグルーピングすることで最大値 $99$ を得ることができます。[1 2 1]
は門松列では無いので、グルーピングできません。
また、[2 1 99] [2 3 1]
とグルーピングすることもできます。この場合グループの数は多いですが、評価値の総和は $2+2=4$ であるため最適解ではありません。
3つ目のテストケースでは、1つもグループを作成できません。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。