zoukankan      html  css  js  c++  java
  • 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;
    }
    


  • 相关阅读:
    Sql server数据库设计 7
    day08作业
    day01作业
    day07作业.
    day05作业
    day04作业
    day02作业
    初学Java的一些注意事项
    day07作业
    Week03面向对象入门
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3063623.html
Copyright © 2011-2022 走看看