题目链接:http://poj.org/problem?id=2051

题目意思:题目有点难理解,所以结合这幅图来说吧~~~~

  有一个叫Argus的系统,该系统支持一个 Register 命令,输入就是类似样例中的:

Register 2004 200

代表编号为 2004 的 Register,每隔 200 个时间单位就会产生一次。2005 同理。然后需要输出前 k 个事件。如果多个事件同时发生,就先输出编号较少的。所以在 600 这个时间上,2004 要比 2005 先输出。

第一次学 rj 哥哥的优先队列,好神奇咯 ^___^

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std; struct node
{
int Q_num, Period;
int Time;
bool operator < (const node& a) const {
return Time > a.Time || (Time == a.Time && Q_num > a.Q_num); // 时间少的先输出或者时间相同时先输出编号小的
}
}; int main()
{
#ifndef ONLINE_JUDGE // 这段东西原来不能写在LA或者POJ上的!!否则会神奇地出现TLE(G++), MLE(C++)现象
freopen("in.txt", "r", stdin); // 用C++(220K 16ms)提交比G++(732K 47ms)快不少
#endif // ONLINE_JUDGE char s[];
node tmp;
priority_queue<node> pq;
while (scanf("%s", s) && s[] != '#') {
scanf("%d%d", &tmp.Q_num, &tmp.Period);
tmp.Time = tmp.Period; // 周期,即每间隔Period的时间该事件会再次发生
pq.push(tmp);
} int K;
scanf("%d", &K);
while (K--) {
tmp = pq.top();
pq.pop();
printf("%d\n", tmp.Q_num);
tmp.Time += tmp.Period; // 更新该事件下一次发生的时间
pq.push(tmp); // 重新插入优先队列进行优先级比较
}
return ;
}

poj 2051.Argus 解题报告的更多相关文章

  1. POJ 2002 Squares 解题报告(哈希 开放寻址 & 链式)

    经典好题. 题意是要我们找出所有的正方形.1000点,只有枚举咯. 如图,如果我们知道了正方形A,B的坐标,便可以推测出C,D两点的坐标.反之,遍历所有点作为A,B点,看C,D点是否存在.存在的话正方 ...

  2. poj 2051 Argus(优先队列)

    题目链接: http://poj.org/problem?id=2051 思路分析: 优先级问题,使用优先队列求解:当执行某个任务后,再增加一个任务到队列中, 该任务的优先级为执行任务的时间加上其时间 ...

  3. 【原创】poj ----- 1182 食物链 解题报告

    题目地址: http://poj.org/problem?id=1182 题目内容: 食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submi ...

  4. POJ 2051 Argus

    Argus Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8782   Accepted: 3985 Description ...

  5. poj 1102.LC-Display 解题报告

    题目链接:http://poj.org/problem?id=1102 题目意思:就是根据给出的格式 s 和 数字 n,输出数值 n 的 LCD 显示.数值 n 的每个数字要占据 s + 2 列 和 ...

  6. poj 1363 Rails 解题报告

    题目链接:http://poj.org/problem?id=1363 题意:有一列火车,车厢编号为1-n,从A方向进站,向B方向出站.现在进站顺序确定,给出一个出站的顺序,判断出站顺序是否合理. 实 ...

  7. POJ 1840 Eps 解题报告(哈希)

    a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0,xi∈[-50,50],且xi!=0.让我们求所有解的可能. 首先,如果暴力判断的话,每个x的取值有100种可能,100^5肯定 ...

  8. POJ 3159 Candies 解题报告(差分约束 Dijkstra+优先队列 SPFA+栈)

    原题地址:http://poj.org/problem?id=3159 题意大概是班长发糖果,班里面有不良风气,A希望B的糖果不比自己多C个.班长要满足小朋友的需求,而且要让自己的糖果比snoopy的 ...

  9. poj 1201 Intervals 解题报告

    Intervals Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %lld & %llu Submit Statu ...

随机推荐

  1. EF方便的添加一条信息...

    //刚开始通过EF添加数据都是这样的...↓ var db = new DBEntities() T_User t_userinfo = new T_User() { Type = "typ ...

  2. linux命令行netstat总结

    1.所谓的监听就是某个服务程序会一直常驻在内存中,所以该程序启动的Port就会一直存在. 2.在小于1023的端口,都是需要以root身份才能够启动的. 3.大于1024以上的Port主要是作为cli ...

  3. JavaWeb学习总结(五十)——文件上传和下载

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  4. java mail

    java mail 1.配置 mvn <dependency> <groupId>javax.mail</groupId> <artifactId>ma ...

  5. Linux下查看nginx安装目录

    输入命令行: ps  -ef | grep nginx master process后边的目录即是.

  6. YC大牛的判题任务-想法

    YC大牛的判题任务 Time Limit: 1000ms Memory Limit: 65536KB   64-bit integer IO format: %lld      Java class ...

  7. 【转】AspNetPager分页控件用法

    AspNetPager分页控件解决了分页中的很多问题,直接采用该控件进行分页处理,会将繁琐的分页工作变得简单化,下面是我如何使用AspNetPager控件进行分页处理的详细代码: 1.首先到www.w ...

  8. iOS开发——UI基础-提示框

    提示框的种类有很多,废话不多说,直接上代码 一.文本提示框 运行结果如下: 代码实现如下: @interface ViewController () // 添加方法 - (IBAction)add; ...

  9. 常用的Git Tips

    导读 Git被越来越多的公司使用,因此我们需要了解Git使用过程中的一些技巧. 一.Configuration:配置 列举所有的别名与配置 git config --list Git 别名配置 git ...

  10. [codeforces 339]D. Xenia and Bit Operations

    [codeforces 339]D. Xenia and Bit Operations 试题描述 Xenia the beginner programmer has a sequence a, con ...