大佬们有没有测试用例推荐一下,自己打的都能过,但是2345都过不了qaq
查看原帖
大佬们有没有测试用例推荐一下,自己打的都能过,但是2345都过不了qaq
331319
Zzz000楼主2021/4/21 10:11
#include <iostream>
#include <iomanip>
using namespace std;

double N, T, ans = 0;		//堆、背包承重
double a[102][3];	//价值比、重量、价值

void check1() {
	for (int i = 1; i < N + 1; i++)
		cout << a[i][0] << " " << a[i][1] << " " << a[i][2] << endl;
}

int main() {
	cin >> N >> T;
	for (int i = 1; i <= N; i++)//cin
	{
		cin >> a[i][1] >> a[i][2];
		a[i][0] = a[i][2] / a[i][1];
	}
	int tem = 0;
	for (int i = 1; i < N; i++)//将数组a按价值比由高到低排序
	{
		for (int j = i; j <= N; j++)
			if (a[j][0] > a[i][0])tem = j;
		a[0][0] = a[i][0];   a[0][1] = a[i][1];   a[0][2] = a[i][2];
		a[i][0] = a[tem][0]; a[i][1] = a[tem][1]; a[i][2] = a[tem][2];
		a[tem][0] = a[0][0]; a[tem][1] = a[0][1]; a[tem][2] = a[0][2];
	}
	check1();
	for (int i = 1; i <= N; i++)
	{
		if (T > a[i][1])
		{
			ans += a[i][2];
			T -= a[i][1];
		}
		else if (T == a[i][1])
		{
			ans += a[i][2];
			cout << setiosflags(ios::fixed) << setprecision(2) << ans << endl;
			return 0;
		}
		else
		{
			ans += (T * a[i][0]);
			cout << setiosflags(ios::fixed) << setprecision(2) << ans << endl;
			return 0;
		}
	}
	cout << setiosflags(ios::fixed) << setprecision(2) << ans << endl;
	return 0;
}

2021/4/21 10:11
加载中...