UVALive 3135--Argus+自定义优先队列的优先规则

题目链接:点击进入

只是题意比较难懂,读懂题后完全可以用优先队列水过去.这次学会自定义优先队列的优先规则,其实就是在结构体中重载一下<运算符.

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;

typedef struct node
{
     int id,num;
     int t;
     ///通过重载<运算符自定义优先队列的优先级
     friend bool operator< (node n1,node n2)
     {
           if(n1.num==n2.num)
               return n1.id>n2.id;
           return n1.num>n2.num;
     }
}P;
P p1,p2;

priority_queue<P>q;

int main()
{
      char str[20];
      int a,b;
      //freopen("in.txt","r",stdin);
      while(scanf("%s",str))
      {
            if(strcmp(str,"#")==0) break;
            scanf("%d%d",&p1.id,&p1.num);
            p1.t=p1.num;
            q.push(p1);
      }
      int k;
      scanf("%d",&k);
      while(k--)
      {
             p2=q.top();  q.pop();
             printf("%d\n",p2.id);
             p2.num+=p2.t;
             q.push(p2);
      }
   return 0;
}
时间: 2024-10-13 09:32:08

UVALive 3135--Argus+自定义优先队列的优先规则的相关文章

UVALive - 3135 - Argus (优先队列!!)

UVALive - 3135 Argus Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description A data stream is a real-time, continuous, ordered sequence of items. Some examples include sensor data, Internet traffic, financi

uva11997 K Smallest Sums&amp;&amp;UVALive 3135 Argus(优先队列,多路归并)

#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<cmath> #include<map> #include<set> #include<vector> #include<algorithm> #include<stack> #in

【优先队列之多路归并】UVALive 3135 Argus

UVALive 3135 Argus http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18684 题意 编写一个系统执行一系列Register命令:Register Q_num Period,每个命令执行周期是Period,执行事件Q_num:如果事件同时发生,优先执行Q_num小的. 示例 Sample Input Register 2004 200 Register 2005 300 # 5 Sample Output

【暑假】[实用数据结构]UVAlive 3135 Argus

UVAlive 3135 Argus Argus Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description A data stream is a real-time, continuous, ordered sequence of items. Some examples include sensor data, Internet traffic, fin

UVALIVE 3135 Argus

#include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <stack> #include <queue> #include <cctype> #include <cstdio> #include <string> #inc

LA 3135 Argus (优先队列)

https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1136 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> using namespace

la 3135 Argus Data Structure

// la 3135 Argus // 学习一下优先队列的使用吧,题目还是比较简单的 // 刘老师的训练指南p188. // 继续练吧.... #include <algorithm> #include <bitset> #include <cassert> #include <cctype> #include <cfloat> #include <climits> #include <cmath> #include &l

atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证

atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证 1. 需求,表单验证需要弹框式,但目前easyui ms绑定死了tooltip式样 1 2. 表单验证表现形式 1 2.1. 弹框 1 2.2. 浮动tooltip,推荐这个 1 3. 表单验证的实现原理 1 3.1. 定义reg 2 3.2. 解释 2 3.3. 调用提示... 2 4. 表单验证框架选型easyui>ligerui 2 4.1. ligerui的表单验证选型... 2 4.

UVALive 6093 Emergency Room --优先队列实现的模拟

题意:给n个医生,这些医生有一个上班时间,然后给一些病人,病人有一个到达的时间,以及一些诊断,诊断有property(优先级)和duration(诊断时间)这两个属性,每个病人可能要诊断多次,最后问每个病人的全部疗程完成离开医院的时间是多少. 分析:用优先队列存储诊断,病人,然后模拟一个诊断过程,完成病人的个数等于病人数的时候就结束.具体看代码吧. 代码: #include <iostream> #include <cstdio> #include <cstring>