非诚勿扰

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 566    Accepted Submission(s): 249

Problem Description
作为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
 
Source
 
Recommend
liuyiding
 

思路:

用vector 处理下就好了 我用vector进行的删除操作 注意 vector删除操作会造成所有数据平移,就像我们平时自己写代码把1------n赋值给0-----n-1一样

消耗比较大 感觉用list效果更好

#include<stdio.h>
#include<vector>
#include<string.h>
#include<algorithm>
#include<string>
using namespace std;
struct haha
{
string str;
int id;
friend bool operator <(haha a,haha b)
{
return a.id<b.id;
}
}temp,q;
vector<struct haha>a[22];
int sum;
int main()
{
int n,cas,i,j,k,ccase=0;
char s[100];
scanf("%d",&cas);
while(cas--)
{
ccase++;
printf("Case #%d:\n",ccase);
sum=0;
for(i=0;i<22;i++)
a[i].clear();
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",s);
if(strcmp(s,"Find")==0)
{ scanf("%d",&k);
while(a[k].empty()&&k<21) k++;
if(k==21) {printf("WAIT...\n");continue;}
sort(a[k].begin(),a[k].end());
printf("%s\n",a[k][0].str.c_str());
a[k].erase(a[k].begin());
sum--;
}
else
{
scanf("%s %d",s,&k);
q.str=s;
q.id=i;
a[k].push_back(q);
sum++;
printf("%d\n",sum);
}
}
}
return 0;
}

hdu 4557 非诚勿扰 vector的应用 原来vector 可以删除指定位置元素 不过消耗大的更多相关文章

  1. HDU 4557 非诚勿扰(Treap找后继)

    非诚勿扰 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi ...

  2. vector 迭代 删除指定的元素

    std::vector< Bullet * > m_vBullets; std::vector< Bullet * > m_vRemoveBulltes; ){ for ( s ...

  3. hdu 4557 非诚勿扰

    水题…… 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include<io ...

  4. HDU 4557 非诚勿扰 队列、(记一次失败的SBT尝试)

    非诚勿扰 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) [Problem De ...

  5. map,vector 等容器内容的循环删除问题(C++)

    map,vector 等容器内容的循环删除问题(C++) map,vector等容器的循环删除不能用普通的方法删除: for(auto p=list.begin();p!=list.end();p++ ...

  6. C++STL二维vector指定位置排序

    自己一直用vector 二维的存储变量 有时候需要进行排序 在此 为记录一下方法 废话少说直接上代码 #include <QCoreApplication> #include <io ...

  7. C++ vector 多次删除第一个元素

    转载声明: 代码都是来源于一下连接,做了一点点修改,为了记忆方便,故贴在这里,原文链接:http://blog.csdn.net/doctor_feng/article/details/1188078 ...

  8. 牛客网 暑期ACM多校训练营(第二场)J.farm-STL(vector)+二维树状数组区间更新、单点查询 or 大暴力?

    开心.jpg J.farm 先解释一下题意,题意就是一个n*m的矩形区域,每个点代表一个植物,然后不同的植物对应不同的适合的肥料k,如果植物被撒上不适合的肥料就会死掉.然后题目将每个点适合的肥料种类( ...

  9. 实战c++中的vector系列--再谈vector的insert()方法(都是make_move_iterator惹的祸)

    之前说过了关于vector的insert()方法,把vector B的元素插入到vector A中.vector A中的结果我们可想而知,可是vector B中的元素还会怎样? 看看之前写过的程序: ...

随机推荐

  1. 每次调用fork()函数之后,父线程和创建出的子线程都是从fork()后开始执行

    Linux下多少个"-"将被打印: 1 2 3 4 5 6 7 8 int main(void){   int i;   for(i=0;i<4;i++){   fork() ...

  2. crm2011js操作IFRAME和选项集

  3. hdu 1530 Maximum Clique

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1530 题目分类:最大团问题 DP + DFS 代码: #include<bits/stdc++. ...

  4. 奋斗的孩子的TableView(三篇文章)

    http://blog.sina.com.cn/s/blog_a6fb6cc90101i8it.html http://blog.sina.com.cn/s/blog_a6fb6cc90101hhse ...

  5. ThinkPHP 3.2 开发过程

    原文:ThinkPHP 3.2 开发过程 设置所有项目的公共配置Application\Common\Conf\config.php,SAE模式下配置文件为config_sae.php 配置默认的模块 ...

  6. stm32f103 TIM1初始化--定时器应用

    //TIM1 分频 #define TIM1_DIV1 (1-1) #define TIM1_DIV2 (2-1) #define TIM1_DIV4 (4-1) #define TIM1_DIV8 ...

  7. poj3678(two-sat)

    传送门:Katu Puzzl 题意:n个点,点的取值可以是0或者1.m条边,有权值,有运算方式(并,或,异或),要求和这条边相连的两个点经过边上的运算后的结果是边的权值.问你有没有可能把每个点赋值满足 ...

  8. Fast portable non-blocking network programming with Libevent

    Fast portable non-blocking network programming with Libevent Fast portable non-blocking network prog ...

  9. Struts2中指定的校验文件不起作用的原因

    转载请注意出处:http://blog.csdn.net/bettarwang/article/details/39801733 我们知道,假设要为某个Action指定校验文件.那么就要将" ...

  10. 破解.net程序 编译和反编译方法

    原文地址:http://www.cnblogs.com/li-peng/archive/2013/01/31/2886727.html 有好多.net程序有加密狗或者有验证,如果exe或dll没有做过 ...