来源

  作为2013年699万应届毕业生中的一员,由于宏观经济的不景气,小明在毕业当天就华丽丽地失业了!

  经历了千难万苦的求职过程,小明特别能理解毕业生的就业之难,所以,他现在准备创建一家专门针对IT人才的求职中介公司——非诚勿扰人力资源开发有限公司。

  基于工作的需要,小明根据求职学生的简历描述为每人评定了一个综合能力值,能力值是一个小于等于20的正整数,值越高表示能力越强。当有公司试图招聘IT人员的时候(每次只招聘1名),需要提出一个综合能力的最低需求,若人才库中有符合要求的人才,则一定能成功招聘。当然,若有多名学生同时满足招聘公司的需求,鉴于高能力人才的稀缺,小明总是优先把能力值低的人才推荐过去;如果依然有多名人员符合要求,则小明就把其中最早来求职的那位学生推荐过去。

  需要说明的是,刚开始的时候,公司的人才库为空,而且一名学生只能和一个企业签约,如果推荐成功,则该名学生的信息需要从人才库中删除。

Input

  输入数据的第一行是一个正整数T(1 <= T <= 20), 表示有T组测试数据;

  每组测试数据第一行是一个整数n(0 <= n <= 1000),表示按照时间先后发生了n次事件。接下来的n行,每行描述一次事件。对于一次事件,先是一个字符串"Add"或者"Find",其中"Add"表示有一名学生加入了人才库,"Find"表示有企业想招聘一名人员。

如果字符串是"Add",则后面将有一个字符串s和一个数字d,用空格隔开,分别表示该名学生的名字和综合能力值,名字由小写字母组成,不为空且长度不超过15;如果字符串是"Find",则后面将有一个数字,表示招聘公司对人才综合能力的最低要求。

Output

对于每组测试数据,第一行输出"Case #c:"(不包含引号)

c是测试数据的组数,从1开始。

然后输出n行,表示n次事件的结果

如果本次事件是添加人才信息入库,则请输出加入该信息后,人才库内的人员数量;

如果本次事件是企业来招聘,则请输出将被录用的人才名字,如果没有人才符合要求,就请输出"WAIT..."

Sample Input

1

5

Add lcy 1

Add lyd 19

Find 11

Find 13

Add zxs 10

Sample Output

Case #1:

1

2

lyd

WAIT...

2

把满足条件的能力最低的人给他;数据不大,两个优先队列就可以,按能力小到大,然后相同的id小的在前面,出现能力满足的就输出,否则就wait

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <iomanip>
#include<cmath>
#include<float.h>
#include<string.h>
#include<algorithm>
#define sf scanf
#define pf printf
#define scf(x) scanf("%d",&x)
#define scff(x,y) scanf("%d%d",&x,&y)
#define prf(x) printf("%d\n",x)
#define mm(x,b) memset((x),(b),sizeof(x))
#include<vector>
#include<queue>
//#include<map>
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
typedef long long ll;
const ll mod=1e9+7;
const double eps=1e-8;
const int inf=0x3f3f3f3f;
using namespace std;
const double pi=acos(-1.0);
const int N=1e5+10;
struct man
{
char name[50];
int id,val;
friend bool operator <(man a,man b)
{
if(a.val==b.val) return a.id>b.id;
return a.val>b.val;
}
};
priority_queue<man> v;
priority_queue<man> v1;
int main()
{
int re,n,cas,x;
scf(re);
man t;char temp[5];
rep(op,1,re+1)
{
while(!v.empty()) v.pop();
while(!v1.empty()) v1.pop();
pf("Case #%d:\n",op);
scf(n);
cas=1;
while(n--)
{
sf("%s",temp);
if(temp[0]=='A')
{
t.id=cas++;
sf("%s%d",t.name,&t.val);
v.push(t);
prf(v.size());
}else
{
scf(x);
int lol=0;
while(!v.empty())
{
t=v.top();
if(t.val>=x)
{
lol=1;
pf("%s\n",t.name);
v.pop();
break;
}else
{
v.pop();
v1.push(t);
}
}
if(lol==0)
pf("WAIT...\n");
while(!v1.empty())
{
t=v1.top();
v1.pop();
v.push(t);
}
}
}
}
return 0;
}

M - 非诚勿扰 优先队列的更多相关文章

  1. 堆排序与优先队列——算法导论(7)

    1. 预备知识 (1) 基本概念     如图,(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树.树中的每一个结点对应数组中的一个元素.除了最底层外,该树是完全充满的,而且从左向右填充.堆的数组 ...

  2. 数据结构:优先队列 基于list实现(python版)

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: Minion-Xu #list实现优先队列 class ListPriQueueValueE ...

  3. python优先队列,队列和栈

    打印列表的疑问 class Node: def __str__(self): return "haha" print([Node(),Node()]) print(Node()) ...

  4. 数据结构作业——Sanji(优先队列)

    山治的婚约 Description 我们知道,山治原来是地下有名的杀人家族文斯莫克家族的三子,目前山治的弟弟已经出现,叫做四治,大哥二哥就叫汪(One)治跟突(Two)治好了(跟本剧情无关) .山治知 ...

  5. Java优先队列

    按照Java api的说法: java.util.PriorityQueue.PriorityQueue() Creates a PriorityQueue with the default init ...

  6. 优先队列实现Huffman编码

    首先把所有的字符加入到优先队列,然后每次弹出两个结点,用这两个结点作为左右孩子,构造一个子树,子树的跟结点的权值为左右孩子的权值的和,然后将子树插入到优先队列,重复这个步骤,直到优先队列中只有一个结点 ...

  7. “玲珑杯”ACM比赛 Round #7 B -- Capture(并查集+优先队列)

    题意:初始时有个首都1,有n个操作 +V表示有一个新的城市连接到了V号城市 -V表示V号城市断开了连接,同时V的子城市也会断开连接 每次输出在每次操作后到首都1距离最远的城市编号,多个距离相同输出编号 ...

  8. Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解

    /* Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次. 要知道,我们从队列头部找到的都是到 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其 ...

  9. 数据结构作业——ギリギリ eye(贪心+优先队列/贪心+并查集)

    ギリギリ eye Description A.D.1999,由坠落地球的“谜之战舰”带来的 Over Technology,揭示了人类历史和远古文明之间的丝丝联系, 促使人类终止彼此间的战争,一方面面 ...

随机推荐

  1. SpringMVC中使用JSON

    前台发送: 传递JSON对象 function requestJson(){ $.ajax.({ type : "post", url : "${pageContext. ...

  2. 基于spring boot 2.x的websocket示例

    spring boot 2/spring 5自带了websocket,下面是最基本的示例(包括java服务端.java客户端以及js客户端) 一.pom依赖 <dependencies> ...

  3. Asp.NET WebApi+Redis实现单用户登录实战演练

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理和 ...

  4. delphi button 实现下拉列表

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  5. Mac 删除/卸载 自己安装的python

    官网pkg安装的python版本 第一步:删除框架 sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7 1 第二步:删除应用目录 ...

  6. MySQL DBA工作角色和职责介绍

    MySQL DBA分架构DBA,运维DBA和开发DBA三种角色,职责介绍如下:

  7. SpringBoot项目获取ApplicationContext来GetBean的方法

    一.简介 我们开发时,经常遇到有些实例需要动态创建,比如有构造函数的组件等.这时候,Spring时我们有ClassPathXmlApplicationContext,但是在Spring Boot时,我 ...

  8. 再看C# ThreadPool与Task的认识总结

    工作线程与I/O线程     在ThreadPool中有这样一个方法: public static bool SetMaxThreads(int workerThreads, int completi ...

  9. “5W1H”带你来学习JavaScript

    上次的设计模式讲课,从中学习到了非常多.不仅是技术上,更重要的是怎样来学习.我们学习的技术.科技的更新速度超过我们的想象,对于我们这个有生命年限的个体,怎样可以在有生之年可以让自己立足于科技的不败浪潮 ...

  10. JPA学习笔记(3)——JPA注解

    Entity Table Id GeneratedValue Basic Column Transient Temporal @Entity @Entity 标注用于实体类声明语句之前.指出该Java ...