题目 3321: 蓝桥杯2025年第十六届省赛真题-画展布置

题目 3321: 蓝桥杯2025年第十六届省赛真题-画展布置
时间限制: 2s 内存限制: 192MB 提交: 673 解决: 130
题目描述
画展策展人小蓝和助理小桥为即将举办的画展准备了 N 幅画作,其艺术价 值分别为 A1, A2, . . . , AN。他们需要从这 N 幅画中挑选 M 幅,并按照一定顺序 布置在展厅的 M 个位置上。如果随意挑选和排列,艺术价值的变化可能会过于 突兀,导致观众的观展体验不够流畅。 

为了优化布置,他们查阅了《画展布置指南》。指南指出,理想的画展应使 观众在欣赏画作时,艺术价值的过渡尽量平缓。指南建议,选择并排列 M 幅 画,应使艺术价值的变化程度通过一个数值 L 来衡量,且该值越小越好。数值 L 的定义为:

                                                             

其中 Bi 表示展厅第 i 个位置上画作的艺术价值。 

现在,他们希望通过精心挑选和排列这 M 幅画作,使 L 达到最小值,以提升画展的整体协调性。请你帮他们计算出这个最小值是多少。

输入格式
输入共两行。 

第一行包含两个正整数 N 和 M,

分别表示画作的总数和需要挑选的画作数量。 

第二行包含 N 个正整数 A1, A2, . . . , AN,表示每幅画作的艺术价值。

输出格式
输出一个整数,表示 L 的最小值。

样例输入复制
4 2
1 5 2 4
样例输出复制
3
提示
【评测用例规模与约定】 

对于 40% 的评测用例,2 ≤ M ≤ N ≤ 103,1 ≤ Ai ≤ 103。 

对于 100% 的评测用例,2 ≤ M ≤ N ≤ 105,1 ≤ Ai ≤ 105。

1.分析

        排序后,类似双指针遍历。

2.代码

#include
#include
using namespace std;
typedef long long LL;
const int MAX = 1e5 + 10;
LL n,m,a[MAX],t,re;
int main() {
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    sort(a, a + n);
    int j = 0;
    for (int i = 1; i < m; i++) {
        t += (a[i - 1] + a[i]) * (a[i] - a[i - 1]);
    }
    re =t;
    for (int i = m,j=1; i < n; i++,j++) {
        t -= (a[j] - a[j-1]) * (a[j] + a[j-1]);
        t+= (a[i - 1] + a[i]) * (a[i] - a[i - 1]);
        re = min(re, t);
    }
    cout << re << endl;
    return 0;
}

你可能感兴趣的:(蓝桥杯,蓝桥杯,职场和发展)