0pts求助
查看原帖
0pts求助
1002517
Adorable_楼主2024/8/6 09:55

大佬也可以给点样例呗

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

#define dd double
#define int long long
dd t,ans;
int n;
struct coin
{
	dd m,v;
}ak[110];

bool mycmp(coin a,coin b)
{
	return a.v>b.v;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin>>n>>t;
	for(int i = 0;i<n;++i)
	{
		cin>>ak[i].m>>ak[i].v;
		ak[i].v/=ak[i].m;
	} 
	sort(ak,ak+n,mycmp);
	for(int i = 0;i<n;i++)
	{
		t-=ak[i].m;
		if(t>0)//如果还有剩余空间,进入下一层循环
		{
			ans+=ak[i].m*ak[i].v;
		} 
		else if(t == 0)//如果没有空间了,结束
		{
			ans+=ak[i].m*ak[i].v;
			break;
		}
		else//t<0 没有剩余空间且不足以完整拿取一种金币,进入下一层循环
		{
			ans+=(t+ak[i].m)*ak[i].v;
			break;
		}
	}
	printf("%.2llf",ans); 
	return 0;
}

2024/8/6 09:55
加载中...