求助
查看原帖
求助
970515
Warriors_Curry楼主2024/7/8 15:29
#include<bits/stdc++.h>
#define ll long long
#define dd double
#define RT 114514
using namespace std;
ll kg[1000005],mn[1000005];
dd kmn[1000005];
struct sab
{
	ll kg;
	ll mn;
	dd kmn;
}s[1000005];
bool cmp(sab x,sab y)
{
	return x.kmn>y.kmn;
}
int main()
{
	dd ans=0;
	ll n,t,nkg=0;
	cin>>n>>t;
	for(ll i=0;i<n;i++) 
	{
		cin>>s[i].kg>>s[i].mn;
		s[i].kmn=(double)s[i].mn/(double)s[i].kg;
	}
	sort(s,s+n,cmp);
	for(ll i=0;;i++)
	{
		if(nkg==t) break;
		if(s[i].kg+nkg<=t)
		{
			ans+=(double)s[i].mn;
			nkg+=s[i].kg;
		}
		else
		{
			ans+=(t-nkg)*s[i].kmn;
			printf("%.2lf",ans);
			return 0;
		}
	}
	return 0;
}

第一个点紫了,想问问到底是啥原因

2024/7/8 15:29
加载中...