1 条题解

  • 0
    @ 2024-10-11 22:14:48

    首先,应当选 happinesshappiness 中最大的 kk 的数。

    这些数要按照什么顺序选呢?

    由于小的数减成 00 就不再减少了,优先选大的更好。

    比如 2,1,12,1,1,如果按照 1,1,21,1,2 的顺序选,答案为 1+0+0=11+0+0=1。但按照 2,1,12,1,1 的顺序选,答案为 2+0+0=22+0+0=2 更优。

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int n, k;
        cin >> n >> k;
        vector<int> happiness(n);
        for (int i = 0; i < n; i++) {
            cin >> happiness[i]; 
        }
        long long ans = 0;
        sort(happiness.begin(), happiness.end(), greater<int>()); 
        for (int i = 0; i < k && happiness[i] > i; i++) {
                ans += happiness[i] - i;
            }
    
        cout << ans;
        return 0;
    }
    
    • 1

    信息

    ID
    115
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    104
    已通过
    27
    上传者