ZOJ 3230 Solving the Problems
优先队列。
按a和b为关键字分别建立优先队列即可。
#include <cstdio> #include <cstring> #include <queue> using namespace std; struct node1 { int a, b; node1() {} node1(int _a, int _b): a(_a), b(_b) {} bool operator < (const node1 & x) const { return a > x.a; } }; struct node2 { int a, b; node2() {} node2(int _a, int _b): a(_a), b(_b) {} bool operator < (const node2 & x) const { return b < x.b; } }; int n, m, p; int main() { while (scanf("%d%d%d", &n, &m, &p) == 3) { priority_queue<node1> q1; priority_queue<node2> q2; int a, b; for (int i=0; i<n; i++) { scanf("%d%d", &a, &b); q1.push(node1(a, b)); } while (m--) { while (!q1.empty() && q1.top().a <= p) { q2.push(node2(q1.top().a, q1.top().b)); q1.pop(); } if (q2.empty()) break; p += q2.top().b; q2.pop(); } printf("%d\n", p); } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步