Alisha’s Party

Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 2650    Accepted Submission(s): 722

Problem Description
Princess Alisha invites her friends to come to her birthday party. Each of her friends will bring a gift of some value v,
and all of them will come at a different time. Because the lobby is not
large enough, Alisha can only let a few people in at a time. She
decides to let the person whose gift has the highest value enter first.

Each time when Alisha opens the door, she can decide to let p people enter her castle. If there are less than p
people in the lobby, then all of them would enter. And after all of her
friends has arrived, Alisha will open the door again and this time
every friend who has not entered yet would enter.

If there are two friends who bring gifts of the same value, then the one who comes first should enter first. Given a query n Please tell Alisha who the n−th person to enter her castle is.

 
Input
The first line of the input gives the number of test cases, T , where 1≤T≤15.

In each test case, the first line contains three numbers k,m and q separated by blanks. k is the number of her friends invited where 1≤k≤150,000. The door would open m times before all Alisha’s friends arrive where 0≤m≤k. Alisha will have q queries where 1≤q≤100.

The i−th of the following k lines gives a string Bi, which consists of no more than 200 English characters, and an integer vi, 1≤vi≤108, separated by a blank. Bi is the name of the i−th person coming to Alisha’s party and Bi brings a gift of value vi.

Each of the following m lines contains two integers t(1≤t≤k) and p(0≤p≤k) separated by a blank. The door will open right after the t−th person arrives, and Alisha will let p friends enter her castle.

The last line of each test case will contain q numbers n1,...,nq separated by a space, which means Alisha wants to know who are the n1−th,...,nq−th friends to enter her castle.

Note: there will be at most two test cases containing n>10000.

 
Output
For each test case, output the corresponding name of Alisha’s query, separated by a space.
 
Sample Input
1
5 2 3
Sorey 3
Rose 3
Maltran 3
Lailah 5
Mikleo 6
1 1
4 2
1 2 3
 
Sample Output
Sorey Lailah Rose
 
Source
题意:有k个人来,门先会开m次,每次开门的条件是假设当第a个人来时,可以放b个人进来。最后会把人全部放进来。查询第i个进来的是谁?
收获:题目没有说开门条件第a个人是按从小到大排序的,而且也没说a一定大于b;所以要考虑这种情况,保持程序的健壮性。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<queue>
#include<vector>
#include<cstdlib>
#include<string>
#include<map>
#include<stack> using namespace std;
#define ll long long
#define lson le,mid,num<<1
#define rson mid+1,ri,num<<1|1
#define stop1 puts("QAQ")
#define stop2 system("pause")
#define maxn 160000 struct node
{
char s[];
int val;
int id;
bool operator < (const node & a) const
{
if(val!=a.val)
return val < a.val;
return id>a.id;
} }peo[maxn];
struct kk
{
int x,y;
}tt[maxn]; int cmp(kk a, kk b)
{
return a.x < b.x;
}
char ans[maxn][]; int main()
{ int T;
scanf("%d",&T);
while(T--)
{ int k,m,q;
scanf("%d%d%d",&k,&m,&q);
for(int i=;i<=k;i++)
{
scanf("%s%d",peo[i].s,&peo[i].val);
peo[i].id=i;
} for(int i=;i<=m;++i)
scanf("%d%d",&tt[i].x,&tt[i].y); sort(tt+, tt+m+,cmp);
priority_queue<node> Q;
memset(ans, , sizeof ans); int sum=,pos=;
for(int i=;i<=m;i++)
{ for(int j = pos; j <=tt[i].x; j++)
{
Q.push(peo[j]);
pos++;
}
for(int j=;j<=tt[i].y;j++)
{
if(!Q.empty())
{node temp = Q.top();
Q.pop();
sum++;
strcpy(ans[sum],temp.s);
}
else
break;
}
} for(int i=pos;i<=k;i++)
{
Q.push(peo[i]);
}
while(!Q.empty())
{
node temp = Q.top();
Q.pop();
sum++;
strcpy(ans[sum],temp.s);
} int ss;
for(int i=;i<q;i++)
{
scanf("%d",&ss);
printf("%s ",ans[ss]);
}
if(q!=)
{
scanf("%d",&ss);
printf("%s\n",ans[ss]);
} }
return ;
}
 

HDU5437 Alisha’s Party (优先队列 + 模拟)的更多相关文章

  1. HDU5437 Alisha’s Party 优先队列

    点击打开链接 可能出现的问题: 1.当门外人数不足p人时没有判断队列非空,导致RE. 2.在m次开门之后最后进来到一批人没有入队. 3.给定的开门时间可能是打乱的,需要进行排序. #include&l ...

  2. Alisha’s Party (HDU5437)优先队列+模拟

    Alisha 举办聚会,会在一定朋友到达时打开门,并允许相应数量的朋友进入,带的礼物价值大的先进,最后一个人到达之后放外面的所有人进来.用优先队列模拟即可.需要定义朋友结构体,存储每个人的到达顺序以及 ...

  3. HDU 5437 Alisha’s Party (优先队列模拟)

    题意:邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当最后所有人都到了还会再开一次门,让还没进来的人进来,每次都是礼物价值高的人先进.最后 ...

  4. hdu 5437(优先队列模拟)

    Alisha’s Party Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  5. hdu5437 Alisha’s Party

    Problem Description Princess Alisha invites her friends to come to her birthday party. Each of her f ...

  6. Codeforces Round #318 (Div. 2) A Bear and Elections (优先队列模拟,水题)

    优先队列模拟一下就好. #include<bits/stdc++.h> using namespace std; priority_queue<int>q; int main( ...

  7. Alisha’s Party---hdu5437(模拟+优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5437 题意:公主有k个朋友来参加她的生日party,每个人都会带价值为v[i]的礼物过来,在所有人到齐 ...

  8. 优先队列 + 模拟 - HDU 5437 Alisha’s Party

    Alisha’s Party Problem's Link Mean: Alisha过生日,有k个朋友来参加聚会,由于空间有限,Alisha每次开门只能让p个人进来,而且带的礼物价值越高就越先进入. ...

  9. HDU 5437 Alisha’s Party (优先队列)——2015 ACM/ICPC Asia Regional Changchun Online

    Problem Description Princess Alisha invites her friends to come to her birthday party. Each of her f ...

随机推荐

  1. POJ1664(简单动态规划)

    #include<iostream> #include<string> #include<cstring> using namespace std; ][]; vo ...

  2. 【Cocos2d-X游戏实战开发】捕鱼达人之游戏场景的创建(六)

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5)    博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注 ...

  3. VMware+Ubuntu8.10+Skyeye+gdb实现u-boot源码调试

    系统平台:WindowsXP 虚拟机: VMware Workstation 6.5.0 Ubuntu8.10 安装程序 ubuntu-8.10-desktop-i386.iso 下载地址:http: ...

  4. sprig——jar包

    Struts. Hibernate.Spring这类的框架给我们开发带来非常大的好处,让我们更加快速.有效的开发.所以我们在开发中通常都会用到各种框架,每个框架 都有很多jar包,每个jar都有各自不 ...

  5. Nexus 刷机

    @echo offfastboot flash bootloader bootloader-hammerhead-hhz12k.imgfastboot flash radio radio-hammer ...

  6. Oracle11g x64使用Oracle SQL Developer报错:Unable to find a Java Virtual Machine

    原因oracle 11g中安装的Oracle SQL Developer是32位的,而我们现在给他指定的java.exe却是64位的,所以会出现这种错误.解决方法1)从网上下载Oracle SQL D ...

  7. 一般处理程序、ASP.NET核心知识(5)--转载

    初窥 1.新建一个一般处理程序 新建一个一般处理程序 2.看看里头的代码 public class MyHandler : IHttpHandler { public void ProcessRequ ...

  8. H5移动端性能优化

    概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点,首屏加载3秒完成或使用Loading 4. 基于联通3G网络平均338KB/s ...

  9. 纯css实现下拉菜单

    今天给大家分享一个纯html+css实现的下拉菜单.在此声明一点,源码并非出自本人之手,是同项目组一兄弟PLUTO写的.好东西嘛,所以果断拿出来和大家分享.如果有更好的想法或者建议,一定记得留言哦!好 ...

  10. Git(Repo)常用命令收集

    (注意: 只记录工作中实际使用的命令) 同步android源码    repo sync:(可加-c,只取当前分支: 可加-j4,线程数量) 查看android源码下所有项目的git状态    rep ...