第一个点RE,求调
查看原帖
第一个点RE,求调
409774
Maysoul楼主2023/4/3 17:43

以为是边界的问题(实际上就是)

特判了n==1后无果

//2023/4/3
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+10;
double num,ans;
struct coin{
	double m,v;
	double bi;
}a[200];
bool cmp(coin a,coin b)
{
	return a.bi>b.bi;
}
int main()
{
	int n,t;
	cin>>n>>t;
	for (int i=1;i<=n;i++)
	{
		cin>>a[i].m>>a[i].v;
		a[i].bi=a[i].v/a[i].m;
	}
	if(n==1)
	{
		if(t>=a[1].m)
		{
			printf("%.2f",a[1].m);
			return 0;
		}
		else
		{
			double g=a[1].bi*t;
			printf("%.2f",g);
			return 0;
		}
	}
	sort(a+1,a+1+n,cmp);
	double kg=0;
	int k=1;
	while(kg<t)
	{
		kg+=a[k].m;
		ans+=a[k].v;
		k++;
	}
	double d=kg-a[k-1].m;
	double e=t-d;
	double f=e*a[k-1].bi;
	ans-=a[k-1].v;
	ans+=f;
	printf("%.2f",ans);
	return 0;
}

2023/4/3 17:43
加载中...