1.题目链接2431 -- Expedition (poj.org)
2.第一次发题解,好兴奋!
3.AC代码如下:
#include <iostream>
#include<queue>
#include <algorithm>
using namespace std;
typedef struct cp {
int dis;
int fuel;
}cp;
bool cmp(cp& A, cp& B) {
return A.dis >= B.dis;
}
cp arr[10000];
int main() {
priority_queue<int> que;
int n = 0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i].dis >> arr[i].fuel;
}
sort(arr, arr + n, cmp);
int l = 0, p = 0;
cin >> l >> p;
int index = 0;
int ans = 0;
while (p < l) {
while (index < n && l - arr[index].dis <= p) {
que.push(arr[index].fuel);
index++;
}
if (!que.empty()) {
p += que.top();
ans++;
que.pop();
}
else {
ans = -1;
break;
}
}
cout << ans << endl;
return 0;
}