hdu5437 Alisha’s Party
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.
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.
5 2 3
Sorey 3
Rose 3
Maltran 3
Lailah 5
Mikleo 6
1 1
4 2
1 2 3
这题可以用set或者优先队列模拟一下,每次在指定的时间读入指定的人数,这些人按照价值从大到小排序,然后当门打开的时候记录它的信息,便于待会输出结果,这里有一点要注意,就是最后m个指令读完后还有人在外面,那么把要这些人都按照规则放入门内。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;
#define ll long long
#define inf 999999999
#define maxn 150060
char s[maxn][205],str[maxn][205];
int v[maxn];
struct node{
int idx,v;
}a,temp,temp1;
bool operator<(node a,node b){
if(a.v==b.v)return a.idx<b.idx;
else return a.v>b.v;
}
multiset<node>myset;
multiset<node>::iterator it;
struct node1{
int t,num;
}b[maxn];
bool cmp(node1 a,node1 b){
return a.t<b.t;
}
int main()
{
int n,m,i,j,T,t,num,tot,now,c,q,ans;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&q);
for(i=1;i<=n;i++){
scanf("%s%d",s[i],&v[i]);
}
for(i=1;i<=m;i++){
scanf("%d%d",&b[i].t,&b[i].num);
}
sort(b+1,b+1+m,cmp);
tot=0;now=0;
myset.clear();
for(i=1;i<=m;i++){
while(now<b[i].t){
now++;
a.idx=now;a.v=v[now];
myset.insert(a);
}
ans=0;
while(ans<b[i].num){
if(myset.empty())break;
ans++;
it=myset.begin();
temp=*it;
tot++;
strcpy(str[tot],s[temp.idx]);
myset.erase(it);
}
}
while(now<n){
now++;
a.idx=now;a.v=v[now];
myset.insert(a);
}
while(tot<n){
it=myset.begin();
temp=*it;
tot++;
strcpy(str[tot],s[temp.idx]);
myset.erase(it);
}
for(i=1;i<=q;i++){
scanf("%d",&c);
if(i==q){
printf("%s\n",str[c]);
}
else printf("%s ",str[c]);
}
}
return 0;
}
hdu5437 Alisha’s Party的更多相关文章
- HDU5437 Alisha’s Party (优先队列 + 模拟)
Alisha’s Party Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- HDU5437 Alisha’s Party 优先队列
点击打开链接 可能出现的问题: 1.当门外人数不足p人时没有判断队列非空,导致RE. 2.在m次开门之后最后进来到一批人没有入队. 3.给定的开门时间可能是打乱的,需要进行排序. #include&l ...
- Alisha’s Party (HDU5437)优先队列+模拟
Alisha 举办聚会,会在一定朋友到达时打开门,并允许相应数量的朋友进入,带的礼物价值大的先进,最后一个人到达之后放外面的所有人进来.用优先队列模拟即可.需要定义朋友结构体,存储每个人的到达顺序以及 ...
- hdu 5437 Alisha’s Party 模拟 优先队列
Problem Description Princess Alisha invites her friends to come to her birthday party. Each of her f ...
- 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 ...
- hdu 5437 Alisha’s Party 优先队列
Alisha’s Party Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_sh ...
- Alisha’s Party(队列)
Alisha’s Party Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- Alisha's Party
Alisha’s Party Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid ...
- 优先队列 + 模拟 - HDU 5437 Alisha’s Party
Alisha’s Party Problem's Link Mean: Alisha过生日,有k个朋友来参加聚会,由于空间有限,Alisha每次开门只能让p个人进来,而且带的礼物价值越高就越先进入. ...
随机推荐
- JPEG解码--(1)JPEG文件格式概览
由于懒和人的忘性,以前做的一些笔记再回过头看时又有些生疏了,我决定把一些内容整理出来,以供有需要的来参考. 了解的人知道其价值所在,不知道的人就弃之如废物吧. 本篇是JPEG解码系列的第一篇--JPE ...
- 二 prometheus 监控 Redis
Prometheus 监控Redis需要用到redis_exporter客户端, Prometheus -> redis_exporter这个模式, 类似监控Mysql 一个思路. 1 ) 设置 ...
- React & Vue2 Butterfly图编排——让数据更自由地驱动DAG
一.简介 Butterfly是由阿里云-数字产业产研部孵化出来的的图编辑器引擎,由咱们部门以及其他开发者共同维护开发,具有使用自由.定制性高的优势,已支持集团内外上百张画布,不夸张的说,我觉得可以算的 ...
- 彻底搞懂MySQL为什么要使用B+树索引
目录 MySQL的存储结构 表存储结构 B+树索引结构 B+树页节点结构 为什么要用B+树索引 二叉树 多叉树 B树 B+树 搞懂这个问题之前,我们首先来看一下,MySQL表的存储结构 MySQL的存 ...
- python之格式化字符串速记整理
一.格式化字符串的方式: 1.字符串表达式: 语法格式:'%s' % var 或 '%s %d' % (var1, var2) 说明:%s.%d等为格式类型说明符 例子: >>> ...
- kafka安装流程
本文是作者原创,版权归作者所有.若要转载,请注明出处. 安装前的环境准备 1.由于Kafka是用Scala语言开发的,运行在JVM上,在安装之前需要先安装JDK(省略) 2.kafka依赖zookee ...
- SQLSERVER 修改数据实例的排序规则
SQL Server服务器修改排序规则的方法 操作及验证步骤: 1 登录数据库后,查看当前安装数据库默认排序规则的两种方式 方式一.使用SQL Server 2014 Management Studi ...
- ichartjs插件的使用
项目中可能会用到饼状图.柱状图.环形图等,ichartjs是一个很不错的插件,体量小,只需引入ichart.1.2.1.min.js即可满足基础需求,github下载地址是:https://githu ...
- uni-app开发经验分享八: 实现微信APP支付的全过程详解
背景 最近项目使用uni-app实现微信支付,把过程简单记录下,帮助那些刚刚基础uni-app,苦于文档的同学们.整体来说实现过程和非uni-app的实现方式没有太大不同,难点就在于uni-app对于 ...
- Java并发包源码学习系列:阻塞队列实现之PriorityBlockingQueue源码解析
目录 PriorityBlockingQueue概述 类图结构及重要字段 什么是二叉堆 堆的基本操作 向上调整void up(int u) 向下调整void down(int u) 构造器 扩容方法t ...