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个人进来,而且带的礼物价值越高就越先进入. ... 
随机推荐
- FlatBuffers使用小结
			最近做一个Android APP,由于离线业务需求,需要在启动APP时候同步大量数据到APP上,遇到了JSON性能瓶颈.从下方的图片中可以看出,当使用 json 传输数据,在解析json的时候会产生大 ... 
- 【Linux】添加硬盘不需要重启服务器
			添加硬盘之后,不用重启服务器 执行下面的语句 ls /sys/class/scsi_host 查看下面有多少host 我这里有三个host 分别执行 echo "- - -" &g ... 
- SAP系统跨平台字符编码转换
			SAP系统在进行了夸平台的迁移,可能会遇到操作系统层文件编码不同,导致SAP系统无法识别或者乱码的问题.例如SAP系统从AIX平台迁移到linux平台,SAP应用服务器的编码会发生变化,从4102变化 ... 
- 2V升5V的升压芯片,两款芯片电路图
			2V的输入电压,是可以用来做5V输出的升压电路,但是2V的供电设备很少,不知道还有什么东西是2V电压的,还需要升压到5V的电路系统. 两款2V升5V的芯片电路图: 第1, PW5100升压芯片,输出电 ... 
- Java基础复习2
			三目运算符 语法:条件判断?表达式1:表达式2; 如果条件判断成立则获取值1否则获取值2 public class demo1{ public static void main(String[ ... 
- 大数据谢列3:Hdfs的HA实现
			在之前的文章:大数据系列:一文初识Hdfs , 大数据系列2:Hdfs的读写操作 中Hdfs的组成.读写有简单的介绍. 在里面介绍Secondary NameNode和Hdfs读写的流程. 并且在文章 ... 
- Connections could not be acquired from the underlying database!
			Connections could not be acquired from the underlying database! 报错截图: 报错内容: Exception in thread &quo ... 
- has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
			前端显示: has been blocked by CORS policy: Response to preflight request doesn't pass access control che ... 
- MonkeyRunner使用
			#-*- coding:utf-8 –*- from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage #连接 ... 
- 谁再把IDEA的Project比作Eclipse的Workspace,我就跟谁急
			前言 你好,我是A哥(YourBatman). 有一个观点:若一个Java开发者能把IDEA玩得666,则技术一定不会差:但若玩不转IDEA(如不会设置.定制.解决日常问题.快捷键等等),那大概率水平 ... 
