33OJ
登录 注册

#ABC480G. 区间得分最小化

区间得分最小化

区间得分最小化

题目描述

一个长度至少为 22 的正整数序列的得分,定义为该序列中最大值与最小值之差。

给定一个长度为 NN 的正整数序列 AA。把 AA 划分成一个或多个连续子序列,要求每个子序列的长度都至少为 22,求所有子序列的得分之和的最小可能值。

形式化地说,求下面式子的最小值:

∑k=1K(max⁡(Bk)−min⁡(Bk))\sum_{k=1}^{K}\left(\max(B_k)-\min(B_k)\right)

其中 KK 为正整数,B1,B2,…,BKB_1,B_2,\dots,B_K 都是长度至少为 22 的正整数序列,且依次拼接 B1,B2,…,BKB_1,B_2,\dots,B_K 后恰好得到 AA。

输入格式

第一行一个整数 NN。

第二行 NN 个整数 A1,A2,…,ANA_1, A_2, \dots, A_N。

输出格式

输出一个整数,表示最小的得分之和。

5
1 3 6 8 9
5

样例 1 解释

把 AA 划分成 (1,3)(1,3) 和 (6,8,9)(6,8,9),前者的得分为 3−1=23-1=2,后者的得分为 9−6=39-6=3,总和为 55。

6
1 4 2 8 7 9
5

样例 2 解释

把 AA 划分成 (1,4,2)(1,4,2) 和 (8,7,9)(8,7,9):前者的得分为 4−1=34-1=3,后者的得分为 9−7=29-7=2,总和为 55,与输出一致。

7
10 480 10 480 480 10 480
470

样例 3 解释

不进行划分,把整个序列作为一个子序列,得分为 480−10=470480-10=470。

数据范围

对于所有测试数据,保证 2≤N≤2×1052\le N\le 2\times 10^5,1≤Ai≤1091\le A_i\le 10^9。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 N≤2000N \le 2000
7∼127 \sim 12 N≤5×104N \le 5 \times 10^4
13∼2013 \sim 20 4040 无特殊限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。