[CF1211C] Ice Cream

(n) 天时间来买一种物品,一共要买 (k) 件,第 (i) 天可以购买的范围是 ([a_i,b_i]),单价 (c_i),求最小总花费

Solution

暴力贪心,从最便宜的开始买即可

写完才发现原题要求用 Kotlin,我当做没看见了

主要是借着这题试用了一下 lambda 表达式

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N = 1000005;
struct tup {
    int a,b,c;
} t[N];

int n,k;

signed main() {
    ios::sync_with_stdio(false);
    cin>>n>>k;
    int ans=0;
    for(int i=1;i<=n;i++) {
        cin>>t[i].a>>t[i].b>>t[i].c;
        ans+=t[i].c*t[i].a;
        k-=t[i].a;
        t[i].b-=t[i].a;
    }
    sort(t+1,t+n+1,[](tup x,tup y)->bool{return x.c<y.c;});
    for(int i=1;i<=n;i++) {
        if(k<=0) continue;
        int tmp=min(k,t[i].b);
        ans+=t[i].c*tmp;
        k-=tmp;
    }
    if(k>0||k<0) cout<<"-1";
    else cout<<ans;
}

原文地址:https://www.cnblogs.com/mollnn/p/12622422.html