zoukankan      html  css  js  c++  java
  • 优先队列(priority_queue)的cmp,POJ(2051)

    sort()函数的cmp为函数,priority_queue的cmp为类,具体写法是:

    struct Node {
          int i,j;
    } node[200];
    
    struct cmp {
        bool operator() (Node a,Node b) {
            if(a.i==b.i)
                return a.j<b.j;///j的升序
            return a.i<b.i;    ///i的升序
            }
    };
    
    priority_queue<Node,vector<Node>,cmp> re;

    #include <iostream>
    #include <queue>
    using namespace std;
    
    typedef struct {
        int id;///用户ID
        int time;///下一次出该出现的时间
        int period;///时间间隔
    } Register;
    
    ///定义优先权队列的比较函数
    struct cmp {
        bool operator()(Register a,Register b) {
            if(a.time==b.time)
                return a.id>b.id;///时间相等时按照id升序排列
            return a.time>b.time;///按照时间升序排列,成为最小堆
        }
    };
    
    int main() {
        ///定义优先权队列,到达时间最小的最先到,相等时按照id升序排列
        priority_queue<Register,vector<Register>,cmp > re;
        string cmd;///命令
        int id;///定义id
        int period;///定义时间间隔
        int count;///定义输出条数
        while(true) {
            cin>>cmd;
            if(cmd.compare("#")==0)break;
            cin>>id>>period;
            Register r;
            r.id = id;
            r.period = period;
            r.time = period;
            re.push(r);
        }
        cin>>count;
        while(count--) {
            Register reg = re.top();
            cout<<reg.id<<endl;
            reg.time += reg.period;
            re.pop();
            re.push(reg);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    java 寒假作业
    java 搭积木
    java 移动距离
    java 垒骰子
    java 饮料换购
    java 牌型种数
    ONOS基础教程(QuickStart with a VM)
    Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
    PM2使用基本介绍
    nodejs项目部署
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5483456.html
Copyright © 2011-2022 走看看