80分,第一个测试WA
查看原帖
80分,第一个测试WA
1586825
ssstry725楼主2025/8/5 17:29

为什么第一个测试点会出小问题。

Read 7, expect 9.

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int sz_m[110], sz_v[110], n, t;
double value[110];

void px() { //排序(px)
	for (int w = 0;w < n;w++) {
		double minn = value[w];
		int		pos =		w ;
		for (int i = w;i < n;i++) {
			if (value[i] < minn) {
				minn = value[i];
				pos = i;
			}
		}
		swap(value[w],value[pos]);
		swap( sz_m[w], sz_m[pos]);
		swap( sz_v[w], sz_v[pos]);
	}
}
int main() {
	double value_sum = 0;
	cin >> n >> t;
	for (int i = 0;i < n;i++) {
		cin >> sz_m[i] >> sz_v[i];
		value[i] = 1.0 * sz_v[i] / sz_m[i];
	}
	
	px();

	// zhuang13:
	int tp = n-1;
	while (t > 0 && tp > 0) {
		if (t - sz_m[tp] >= 0) {
			t -= sz_m[tp];
			value_sum += sz_v[tp];
			tp -= 1;
		}
		else {
			value_sum += t * value[tp];
			t = 0;
		}

	}
	printf("%0.2f", value_sum);
}
2025/8/5 17:29
加载中...