基于排序的算法
  • 板块P4995 跳跳!
  • 楼主WwwHx
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/28 20:38
  • 上次更新2024/11/28 22:04:29
查看原帖
基于排序的算法
1290896
WwwHx楼主2024/11/28 20:38
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;

int main() {
    int n;cin >> n;
    LL a[n] = { 0 };
    for (int i = 0;i < n;i++) {
        cin >> a[i];
        if (a[i] > a[0])swap(a[i], a[0]);
    }
    //按照差值最大值排序
    for (int i = 0;i < n - 1;i++) {
        int t = abs(a[i + 1] - a[i]);
        for (int j = i + 1;j < n;j++) {
            if (abs(a[j] - a[i]) > t) { swap(a[j], a[i + 1]);t = abs(a[i + 1] - a[i]); }
        }
    }
    // for (int i = 0;i < n;i++)cout << a[i] << ' ';
    // cout << endl;
    LL sum = a[0] * a[0];
    for (int i = 0;i < n - 1;i++)sum += (a[i + 1] - a[i]) * (a[i + 1] - a[i]);
    cout << sum;
}

我看大家似乎都用的顺序然后左右指针,此处给出一个比较容易理解的算法,效率不高,但勉强AC

2024/11/28 20:38
加载中...