1 条题解

  • 6
    @ 2024-1-10 16:46:44

    这道题结果可以写成愉快度-不愉快度,其中不愉快度是课内原题,不再赘述。我们直接来化简愉快的。 \\愉快度可以写成如下的和式,并化简: i=k+1nB(t[i]i)\\ \sum_{i=k+1}^{n}B*(t[i]-i) =Bi=k+1n(t[i]i)\\ =B*\sum_{i=k+1}^{n}(t[i]-i) =Bi=k+1nt[i]i=k+1ni)\\ =B*(\sum_{i=k+1}^{n}t[i]-\sum_{i=k+1}^{n}i) =Bsum[n]sum[k](nk)i)\\ =B*(sum[n]-sum[k]-(n-k)*i)

    参考代码
    
    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int MAXN = 100005;
    int n, m, C, k, B;
    long long t[MAXN], s[MAXN];
    int main()
    {
        cin >> n >> m >> B >>C;
        for (int i = 1; i <= n; i++)
            cin >> t[i];
        sort(t + 1, t + 1 + n);
        for (int i = 1; i <= n; i++)
            s[i] = s[i - 1] + t[i];
        k = 0;
        for (int i = 1; i <= m; i++)
        {
            while (k < n && i > t[k + 1])
                k++;
            cout << B*(s[n]-s[k]-i*(n-k))-C * (i * k - s[k]) << " ";
        }
        return 0;
    }
    
    • 1

    信息

    ID
    649
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    (无)
    递交数
    110
    已通过
    72
    上传者