1 条题解

  • 1
    @ 2026-8-4 20:04:46

    每个动作能带来的价值都只与最后一次进行的时间与首次进行的时间,即最后一次进行的时间-首次进行的时间

    因此让开头和结尾尽可能拉开就行了。细节可以见代码

    #include<bits/stdc++.h>
    using namespace std;
    int c[310],sum;
    bool cmp(int n,int m){
        return n>m;
    }
    int main(){
        int n,k;
        cin>>n>>k;
        for(int i=1;i<=k;i++){
            cin>>c[i];
        }
        sort(c+1,c+k+1,cmp);
        for(int i=1;i<=n;i++){
            if(i>n-i+1)break;
            sum+=(n-i-i+1)*c[i];
        }
        cout<<sum;
    
        
    }
    
    
    
    • 1

    信息

    ID
    41
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    20
    已通过
    7
    上传者