题目描述

思路
这道题的重点是可以自由挑选打龙的顺序,所以可以用vector来存储所有x,y的值,然后进行排序。
代码
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <iostream> #include <vector> #include <algorithm> using namespace std;
int main() { int s, n; cin >> s >> n;
vector<pair<int, int>> dragons(n);
for (int i = 0; i < n; ++i) { cin >> dragons[i].first >> dragons[i].second; }
sort(dragons.begin(), dragons.end()); for (int i = 0; i < n; ++i) { if (s > dragons[i].first) { s += dragons[i].second; } else { cout << "NO" << endl; return 0; } }
cout << "YES" << endl; return 0; }
|
如果是降序的话需要写成
1 2 3
| sort(dragons.begin(), dragons.end(), [](pair<int, int> a, pair<int, int> b) { return a.first > b.first; });
|