1 条题解

  • 0
    @ 2024-9-28 13:15:01

    贪心策略:

    当元素数量 4\ge 4

    1. 用最小送最大和次大过河,推导出公式:2a1+an1+an2a_{1}+a_{n-1}+a_{n}

    2. 用最小和次小送最大和次大过河,推导出公式:a1+2a2+ana_{1}+2a_{2}+a_{n}

    以上两者策略取最小,最后剩余的 131\sim 3 个数的情况单独计算。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N = 1e6 + 10, INF = 0x3f3f3f3f, MOD = 1E9 + 7;
    ll n, a[N], ans;
    
    int main(int argc, char* argv[]) {
        cin >> n;
        for (int i = 1; i <= n; i++) cin >> a[i];
        sort(a + 1, a + 1 + n);
        while (n >= 4) {
            ans += min(2 * a[1] + a[n - 1] + a[n], a[1] + 2 * a[2] + a[n]);
            n -= 2;
        }
        if (n <= 2) ans += a[n];
        if (n == 3) ans += a[1] + a[2] + a[3];
        cout << ans;
        return 0;
    }
    
    • 1

    信息

    ID
    944
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    314
    已通过
    89
    上传者