萌新求救,这道题为什么不可以用贪心做啊,卡90分一直过不去
查看原帖
萌新求救,这道题为什么不可以用贪心做啊,卡90分一直过不去
802675
Whoping楼主2022/12/15 12:07
#include<iostream>
#include<algorithm>

using namespace std;
typedef long long ll;
struct P{
	ll time;
	ll value;
	float rv;
}cao[10100];

ll t, m;
long long sum;

bool cmp(P& a, P& b) {
	if (a.rv == b.rv)return a.time < b.time;
	return a.rv > b.rv;
}


int main() {
	cin >> t >> m;
	for (int i = 1; i <= m; i++) {
		cin >> cao[i].time >> cao[i].value;
		cao[i].rv = cao[i].value*1.0 / cao[i].time;
	}
	sort(cao + 1, cao + 1 + m, cmp);
	//for (int i = 1; i <= m; i++)cout << cao[i].time << " ";
	for (int i = 1; i <= m; i++) {
		if (t >= cao[i].time) {
			while (t >= cao[i].time&&t) {
				t -= cao[i].time;
				if (t < 0) {
					t += cao[i].time;
					break;
				}
				sum += cao[i].value;
			}
		}
	}
	//if (t > 0) {
	//	for (int i = 1; i <= m; i++) {
	//		if (t == cao[i].time) {
	//			t -= cao[i].time;
	//			sum += cao[i].value;
	//			break;
	//		}
	//	}
	//}
	cout << sum;
	return 0;
}
2022/12/15 12:07
加载中...