20分,求调,必关注
查看原帖
20分,求调,必关注
1764988
day0楼主2025/7/19 10:45
#include<iostream>
#include <iomanip>
using namespace std;
struct pile {
	int m;
	int v;
	float unit;
};
void BubbleSort(pile piles[],int N) {
	int i, j;
	for (i = 0; i < N - 1; i++) {
		for (j = 0; j < N - i - 1; j++) {
			if (piles[j].unit < piles[j + 1].unit) {
				swap(piles[j].unit, piles[j + 1].unit);
			}
		}
	}
}
 double caculataunit(pile piles[],int N,int T) {
	for (int i = 0; i < N; i++) {
		piles[i].unit = (double)piles[i].v / piles[i].m;
	}
	BubbleSort(piles, N);
	double total_value = 0.0;
	for (int i = 0; i < N; i++) {
		if (T >= piles[i].m) {
			total_value += piles[i].v;
			T -= piles[i].m;
		}
		else {
			double surplesvalue = (double)T / piles[i].m;
			total_value += piles[i].v * surplesvalue;
			T = 0;
			break;
		}
	}
	return total_value;
}
int main() {
	int N, T;
	cin >> N >> T;
	pile piles[100];
	for (int i = 0; i < N; i++) {
		cin >> piles[i].m >> piles[i].v;
	}
	double max_value = caculataunit(piles, N, T);
	cout << fixed << setprecision(2) << max_value << endl;
	return 0;
}
2025/7/19 10:45
加载中...