求助,80分第一个测试点re
查看原帖
求助,80分第一个测试点re
718032
Si_Ji_Lao楼主2023/10/23 09:36
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
long long N;
double T;//N堆,T weight;
double now,tow;
long long index = 0;

struct jinbi{
	double m;//weight
	double v;//price
	double c;
}arr[1005];

bool cmp(jinbi a, jinbi b){
	return a.c>b.c;
}

int main(){
	cin>>N>>T;
	for(int i=0;i<N;i++){
		cin>>arr[i].m>>arr[i].v;
		if(arr[i].v!=0){
			arr[i].c=arr[i].v/arr[i].m;
		}else arr[i].c=0;
	}
	sort(arr,arr+N,cmp);
	
	while(tow<T){
		if(arr[index].m<T-tow){
			now += arr[index].v;
			tow += arr[index].m;
		}
		else{
			now += arr[index].c*(T-tow);
			tow += (T-tow);
			break;
		}
		index++;
	}
	cout<<fixed<<setprecision(2)<<now;
	return 0;
	
}
2023/10/23 09:36
加载中...