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
  • 相关阅读:
    Error C1189: #error: Please use the /MD switch for _AFXDLL builds
    block,inline和inline-block概念和区别(转载)
    jQuery学习--Code Organization Concepts
    Kafka— —副本(均衡负载)
    Kafka实践1--Producer
    漫画HDFS工作原理(转)
    JavaScript学习笔记3
    搭建简单SBT工程实践
    Hive SQL测试
    SparkSql常用语句
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5483456.html
Copyright © 2011-2022 走看看