只有第一个是对的,其他都是WA,求助
查看原帖
只有第一个是对的,其他都是WA,求助
1402535
nh7871楼主2024/7/23 10:32
#include <bits/stdc++.h>
int main() {
	using namespace std;
	int n, t;
	cin >> n
	    >> t;
	double m[n], v[n];//m重量,v价值
	for ( int i = 0; i < n; i++ ) {
		cin >> m[i]
		    >> v[i];
	}
	double g[n];//单位价值
	for ( int j = 0; j < n; j++ ) {
		g[j] = v[j] / m[j];
	}
	double max = g[0], money = 0;
	int id = 0, times = 0;
loop:
	for ( int k = 0; k < n; k++ ) {
		for ( int l = 0; l < n - k; l++ ) {
			if ( g[k] > g[l] && g[k] > g[k - 1] ) {
				max = g[k];
				id = k;
			}
		}
	}//求最大g
	if ( t - m[id] <= 0 ) {
		money += t * g[id];
	} else {
		if ( t - m[id] > 0 ) {
			money += v[id];
			g[id] = 0; //最大的单位价值变为0
			t = t - m[id];
			times++;
			if ( times == n ) {
				goto out;
			}
		}//从大到小依次减
		goto loop;
	}
out:
	printf ( "%.2f", money );
	return 0;
}

2024/7/23 10:32
加载中...