题目描述
画展策展人小蓝和助理小桥为即将举办的画展准备了 N
幅画作,其艺术价值分别为 A1,A2,…,AN
。
他们需要从这 N
幅画中挑选 M
幅,并按照一定顺序布置在展厅的 M
个位置上。
如果随意挑选和排列,艺术价值的变化可能会过于突兀,导致观众的观展体验不够流畅。
为了优化布置,他们查阅了《画展布置指南》。
指南指出,理想的画展应使观众在欣赏画作时,艺术价值的过渡尽量平缓。
指南建议,选择并排列 M
幅画,应使艺术价值的变化程度通过一个数值 L
来衡量,且该值越小越好。
数值 L
的定义为:
L=∑i=1M−1|B2i+1−B2i|
其中 Bi
表示展厅第 i
个位置上画作的艺术价值。
现在,他们希望通过精心挑选和排列这 M
幅画作,使 L
达到最小值,以提升画展的整体协调性。
请你帮他们计算出这个最小值是多少。
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e5 + 5;
typedef long long LL;
LL v[N];
LL d[N];
LL q[N];
LL qz[N];
LL n;
LL m;
int main()
{
cin >> n >> m;
for (LL i = 1; i <= n; i++)
{
cin >> v[i];
d[i] = v[i] * v[i];
}
sort(d + 1, d + n + 1);
for (LL i = 1; i < n; i++)
{
q[i] = abs(d[i + 1] - d[i]);
qz[i] += q[i] + qz[i - 1];
}
qz[0] = 0;
LL minn = 1e10;
for (int i = 1; i < n; i++)
{
if(i>=m-1)
minn = min(qz[i] - qz[i - m+1], minn);
}
cout << minn;
}