求助第一个点就错了
查看原帖
求助第一个点就错了
417994
wbstc12138楼主2022/2/25 16:25
#include <bits/stdc++.h>
using namespace std;
typedef struct {
	int m,v;
}bag; 
bool cmp (bag a ,bag b) {
	return (1.0*a.v/a.m)>(1.0*b.v/b.m);
}
int main () {
	int a,b,n,t,sum;
	cin >>n >> t;
	bag *p=new bag[n];
	for (a=0;a<n;a++) cin >> p[a].m >> p[a].v;
	sort (p,p+n,cmp);
	for (a=0;a<n;a++)  p[a].v /=p[a].m*1.0;
	for (sum=b=a=0;a<t;b++) {
		if ((a+p[b].m)>t) {
			sum=sum+(t-a)*p[b].v;
			a=t;
			break;
		} else {
			a+=p[b].m;
			sum+=p[b].m*p[b].v;
		}
		
	}
	printf ("%0.2f",sum*1.0);
} 
2022/2/25 16:25
加载中...