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

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn = + ;
struct fri{
int v;int id;
friend bool operator < (const fri &a,const fri &b){
return a.v<b.v||(a.v==b.v&&a.id>b.id);
}
fri (int v,int id) :v(v),id(id){}
}; priority_queue <fri> pq;
char name[maxn][];
int v[maxn],id[maxn];
pair <int,int> tn[maxn];///开门时间及允许进入人数
int qe[maxn];
int tq[maxn]; int main(){
int t,k,m,q;
while(~scanf("%d",&t)){
while(t--){
scanf("%d%d%d",&k,&m,&q);
for(int i=;i<k;i++)
scanf("%s%d",name[i],&v[i]);
for(int i=;i<m;i++)
scanf("%d%d",&tn[i].first,&tn[i].second);
sort(tn,tn+m);
int pernum = ,cnt = ,T = ;
for(int i=;i<k;i++){
cnt++;
pq.push(fri(v[i],i));
while(pernum != m&& tn[pernum].first <= cnt){
int enternum = tn[pernum].second;
while(enternum && !pq.empty()){
fri ss = pq.top();pq.pop();
tq[T++] = ss.id;
enternum--;
}
pernum++;
}
}
while(!pq.empty()){
fri ss = pq.top();pq.pop();
tq[T++] = ss.id;
}
for(int i=;i<q;i++) {
scanf("%d",&qe[i]);
if(!i) printf("%s",name[tq[qe[i]-]]);
else printf(" %s",name[tq[qe[i]-]]);
}
printf("\n");
}
}
return ;
}

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

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

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

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

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

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

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

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

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

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

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

  6. HDU 5437 & ICPC 2015 Changchun Alisha's Party(优先队列)

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

  7. 暑假练习赛 004 E Joint Stacks(优先队列模拟)

    Joint StacksCrawling in process... Crawling failed Time Limit:4000MS     Memory Limit:65536KB     64 ...

  8. Codeforces Round #375 (Div. 2) Polycarp at the Radio 优先队列模拟题 + 贪心

    http://codeforces.com/contest/723/problem/C 题目是给出一个序列 a[i]表示第i个歌曲是第a[i]个人演唱,现在选出前m个人,记b[j]表示第j个人演唱歌曲 ...

  9. Problem E: 穷游中国在统题 优先队列 + 模拟

    http://www.gdutcode.sinaapp.com/problem.php?cid=1049&pid=4 Problem E: 穷游中国在统题 Description Travel ...

随机推荐

  1. linux安装anaconda3 conda: command not found

    在使用Anaconda3时出现: conda:未找到命令 最后发现每次开机后都要运行一个命令才行:export PATH=~/anaconda3/bin:$PATH 如果要永久保存路径: 1.在终端输 ...

  2. 单链表ADT

    本博客第一篇学术性博客,所以还是写点什么东西: 首先这篇博客以及以后的博客中的代码尽量百分之90是自己写过的: 可能有部分图片和代码是我认为别人更好的故摘抄下来, 本人三观正确,所以一定会表明来源: ...

  3. spring boot读取classpath下的json文件

    import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resour ...

  4. socket keepalive理解

    java socket编程中有个keepalive选项,看到这个选项经常会误解为长连接,不设置则为短连接,实则不然. socket连接建立之后,只要双方均未主动关闭连接,那这个连接就是会一直保持的,就 ...

  5. rtp传输音视频(纯c代码)

    参考链接: 1. PES,TS,PS,RTP等流的打包格式解析之RTP流 https://blog.csdn.net/appledurian/article/details/73135343   2. ...

  6. Datatables一些常见的JS用法(多与表格有关)

    **********************--倒--序--上--升--(方便新增.更新)*********************** (3)给 动态生成 的 行 内按钮,添加点击事件(多用于分页情 ...

  7. IIS--------问题解决(localhost可以访问,本地ip不可以)

    api:localhost可以访问,本地ip就不可以,报错:405 解决方案:api项目 - 属性 - web - 服务器 将:iis-express 改为 本地iis 创建虚拟目录:eg:http: ...

  8. struts校验

    Struts2 校验框架 Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更 ...

  9. Curve 曲线 工具

    最近研究了曲线绘制的工具,主要是2D方程的绘制.综合了许多工具,完成了一下两个脚本. 绘制的工具: using UnityEngine; using System.Collections; using ...

  10. 互动科技 快乐分享 X/Open DTP——分布式事务模型

    这一几天一直在回顾事务相关的知识,也准备把以前了解皮毛的知识进行一些深入总结,虽然这一些知识并没有用到,但是了解其实现原理还是很有必要的,因为知道了原理,你也能把它实现出来. 在上一节事务的编程模型里 ...