Argus UVALive - 3135(优先队列 水题一道)

有一系列的事件,它每Period秒钟就会产生编号为qNum的事件,你的任务是模拟出前k个事件,如果多个事件同时发生,先处理qNum小的事件

今天再看看数据结构。。

#include 
#include 
#include 
#include 
#include 
#include <set>
#include 
#include 
#include 
#include 
#include 
#define rap(i, a, n) for(int i=a; i<=n; i++)
#define MOD 2018
#define LL long long
#define ULL unsigned long long
#define Pair pair
#define mem(a, b) memset(a, b, sizeof(a))
#define _  ios_base::sync_with_stdio(0),cin.tie(0)
//freopen("1.txt", "r", stdin);
using namespace std;
const int maxn = 10010, INF = 0x7fffffff;

struct node
{
    int value, time, T;
    bool operator < (const node& a) const {
        return time > a.time || (time == a.time && value > a.value);
    }
};

int main()
{
    priority_queue q;
    char s[20];
    while(scanf("%s", s) && s[0] != '#')
    {
        node e;
        scanf("%d%d", &e.value, &e.T);
        e.time = e.T;
        q.push(e);
    }
    int k;
    cin>> k;
    while(k--)
    {
        node e = q.top();
        q.pop();
        cout<< e.value <<endl;
        e.time += e.T;
        q.push(e);
    }

    return 0;
}

 

转载于:https://www.cnblogs.com/WTSRUVF/p/9437030.html

你可能感兴趣的:(Argus UVALive - 3135(优先队列 水题一道))