TLE 求调
查看原帖
TLE 求调
1398360
Derek0823楼主2025/1/25 22:43
#include <bits/stdc++.h>
using namespace std;

int distance(const vector<int>& A, const vector<int>& B) {
    int dist = 0;
    for (size_t i = 0; i < A.size(); ++i) {
        dist += abs(A[i] - B[i]);
    }
    return dist;
}

bool isHarmonious(const vector<int>& seq) {
    int n = seq.size();
    for (int i = 1; i < n - 1; ++i) {
        if (seq[i] != seq[i - 1] + seq[i + 1]) {
            return false;
        }
    }
    return true;
}

int findMinDistance(const vector<int>& B) {
    int n = B.size();
    int minDist = INT_MAX;
    for (int a1 = -1000; a1 <= 1000; ++a1) {
        for (int a2 = -1000; a2 <= 1000; ++a2) {
            vector<int> A(n);
            A[0] = a1;
            A[1] = a2;
            for (int i = 2; i < n; ++i) {
                A[i] = A[i - 1] - A[i - 2];
            }
            if (isHarmonious(A)) {
                minDist = min(minDist, distance(A, B));
            }
        }
    }
    return minDist;
}

int main() {
    int n;
    cin >> n;
    vector<int> B(n);
    for (int i = 0; i < n; ++i) {
        cin >> B[i];
    }
    int result = findMinDistance(B);
    cout << result << endl;
    return 0;
}

14分

2025/1/25 22:43
加载中...