魔法草药 题解
2024-08-03 17:18:57
发布于:广东
#include<bits/stdc++.h>
#include<vector>
using namespace std;
struct dada{
	int l,r;
	double sum;
};
int a,n,ans,m;
vector<dada>v;
bool cmp(dada x,dada y){
	return x.sum>y.sum;
}
int main(){
	scanf("%d%d",&n,&a);
	for(int i=0;i<n;i++){
		scanf("%d%d",&m,&ans);
		v.push_back({m,ans,ans/(double)m});
	}
	sort(v.begin(),v.end(),cmp);
	int l1=0;
	ans=0;
	double cnt=0;
	while(true){
		if(v[l1].l+ans<a){
			ans+=v[l1].l;
			cnt+=v[l1].r;
			l1++;
		}else{
			cnt+=(a-ans)*v[l1].sum;
			break;
		}
	}
	printf("%.2lf",cnt);
	return 0;
}
这里空空如也







有帮助,赞一个