一测试点没过,其余全过,没明白(悲)
查看原帖
一测试点没过,其余全过,没明白(悲)
1220566
chiranxi楼主2024/6/17 20:59
#include<bits/stdc++.h>
using namespace std;

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n , t;
	double value = 0;
	int wei = 0;
	cin >> n >> t;
	pair <double , double> arr[n];
	for(int i = 0 ; i < n ; ++i ){
		cin >> arr[i].first >> arr[i].second;   //first为重量  second为价值
	}
	for(int i  = 0 ; i < n - 1; ++i) {
		for(int j = i + 1 ; j <= n ; ++j){
			if((arr[i].second / arr[i].first) > (arr[j].second / arr[j].first)){
				int ans;
				ans = arr[i].first;
				arr[i].first = arr[j].first;
				arr[j].first = ans;
                ans = arr[i].second;
				arr[i].second = arr[j].second;
				arr[j].second = ans;				
			}
		}
	}
	for(int i =  n - 1 ; i >= 0 ; --i){
		if(wei + arr[i].first < t){
			value += arr[i].second;
			wei += arr[i].first;
		}
		else{
			int weight = t;
			weight -= wei;
			value += (arr[i].second / arr[i].first) * weight;
			printf("%.2lf",value);
			return 0;
		}
	}
}
2024/6/17 20:59
加载中...