LG-P9325. 【GESP强化 八级】对称山峰(Symmetric Mountains)

提交0 通过0
通过率0%
时间限制1000ms
内存限制512MiB
    ID: 10355 传统题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 普及 上传者: 标签>GESPGESP强化C++c++编程题洛谷公开题模拟2023枚举CCC(加拿大)区间 DP双指针 two-pointer算法优化与复杂度分析

题目描述

题目描述

导游丽贝卡想在杂志上宣传落基山脉。她拍了一张包含 NN 座山的照片,从左到右第 ii 座山的高度为 hih_i。

她可以从照片左侧和右侧各裁去若干座山,也可以不裁去。裁剪后留下的是原照片中一段连续的山,即第 ll 座到第 rr 座山,其中 l≤rl\le r。她希望留下的照片尽可能对称。

我们用“不对称值”衡量一段照片的不对称程度:把距这段照片中点同样远的两座山配成一对,计算每对山高度差的绝对值,再把这些绝对值相加。

绝对值记为 ∣v∣|v|,例如 ∣−6∣=6|-6|=6,∣14∣=14|14|=14。区间 [l,r][l,r] 的不对称值为

$$\sum_{i=0}^{\lfloor(r-l)/2\rfloor}|h_{l+i}-h_{r-i}|$$

也就是说,从两端向中间依次配对,每对只计算一次。如果山的数量为奇数,中间那座山与自己配对,贡献为 00。

丽贝卡还不知道最终照片需要多宽。因此,对每一种可能的长度 1,2,…,N1,2,\ldots,N,请分别求出:在所有保留该数量连续山峰的裁剪方案中,不对称值最小是多少。

输入格式

第一行一个整数 NN,表示山的数量。

第二行 NN 个整数 h1,h2,…,hNh_1,h_2,\ldots,h_N,分别表示从左到右各座山的高度。

输出格式

输出一行 NN 个整数,用空格分隔。第 ii 个整数表示长度为 ii 的连续山峰片段中,最小的不对称值。

样例输入 1

7
3 1 4 1 5 9 2

样例输出 1

0 2 0 5 2 10 10

样例输入 2

4
1 3 5 6

样例输出 2

0 1 3 7

样例输入 3

1
1

样例输出 3

0

说明/提示

样例 1 解释

下面解释为什么第 55 个输出值为 22。长度为 55 的片段有三种:

  • [3,1,4,1,5][3,1,4,1,5]:不对称值为 ∣3−5∣+∣1−1∣+∣4−4∣=2|3-5|+|1-1|+|4-4|=2。
  • [1,4,1,5,9][1,4,1,5,9]:不对称值为 ∣1−9∣+∣4−5∣+∣1−1∣=9|1-9|+|4-5|+|1-1|=9。
  • [4,1,5,9,2][4,1,5,9,2]:不对称值为 ∣4−2∣+∣1−9∣+∣5−5∣=10|4-2|+|1-9|+|5-5|=10。

三者中的最小值为 22。

样例 2 解释

这个样例满足子任务 2 的条件。唯一一个长度为 44 的片段是 [1,3,5,6][1,3,5,6],其不对称值为 ∣1−6∣+∣3−5∣=7|1-6|+|3-5|=7。

数据范围

本题采用捆绑测试。原比赛共 1515 分,各子任务如下:

子任务 原比赛分值 NN 的范围 hih_i 的范围 附加限制
1 5 1≤N≤3001\le N\le300 0≤hi≤1050\le h_i\le10^5 无
2 1≤N≤50001\le N\le5000 山的高度从左到右单调不减
3 无