求助,只有第一个点过了
查看原帖
求助,只有第一个点过了
605777
Jasonde1024楼主2022/3/31 20:43
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct GoldCoin {
	int weight;
	int value;
	int factor;
};

bool compare(GoldCoin g1, GoldCoin g2) {
	return g1.factor > g2.factor;
}
int main() {
	int n;
	double bag;
	cin >> n >> bag;
	vector<GoldCoin> vec;
	for (int i = 0; i < n; i++) {
		int w, v;
		cin >> w >> v;
		GoldCoin g;
		g.weight = w;
		g.value =v;
		g.factor = double(v)/double(w);
		vec.push_back(g);
	}
	sort(vec.begin(), vec.end(), compare);
	double value = 0.0;
	double weight = 0.0;
	for (auto &gold_coin : vec) {
			//		cout << "Current weight: " << weight << endl;
			//cout << "This coin's weight: " << gold_coin.weight << endl;
		if (bag - weight >= gold_coin.weight) {

			// add gold coin
			weight += gold_coin.weight;
			value += gold_coin.value;
		} else {
			double weight_left = bag - weight;
			double value1 = weight_left * gold_coin.factor;
			weight += weight_left;
			value += value1;
		}
	}
	printf("%.2f", value);
}

样例和第一个测试点可以过,但是其他的测试点都奇葩的WA,感觉思路也没有错误,死活不知道为什么无法通过,求助

2022/3/31 20:43
加载中...