标签:贪心 时间 范围 clu ++ pre include continue ons
有 \(n\) 天时间来买一种物品,一共要买 \(k\) 件,第 \(i\) 天可以购买的范围是 \([a_i,b_i]\),单价 \(c_i\),求最小总花费
暴力贪心,从最便宜的开始买即可
写完才发现原题要求用 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;
}
标签:贪心 时间 范围 clu ++ pre include continue ons
原文地址:https://www.cnblogs.com/mollnn/p/12622422.html