Alisha’s Party (HDU5437)优先队列+模拟
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)优先队列+模拟的更多相关文章
- HDU 5437 Alisha’s Party (优先队列模拟)
题意:邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当最后所有人都到了还会再开一次门,让还没进来的人进来,每次都是礼物价值高的人先进.最后 ...
- hdu 5437(优先队列模拟)
Alisha’s Party Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- Codeforces Round #318 (Div. 2) A Bear and Elections (优先队列模拟,水题)
优先队列模拟一下就好. #include<bits/stdc++.h> using namespace std; priority_queue<int>q; int main( ...
- HDU5437 Alisha’s Party (优先队列 + 模拟)
Alisha’s Party Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 优先队列 + 模拟 - HDU 5437 Alisha’s Party
Alisha’s Party Problem's Link Mean: Alisha过生日,有k个朋友来参加聚会,由于空间有限,Alisha每次开门只能让p个人进来,而且带的礼物价值越高就越先进入. ...
- 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) ...
- 暑假练习赛 004 E Joint Stacks(优先队列模拟)
Joint StacksCrawling in process... Crawling failed Time Limit:4000MS Memory Limit:65536KB 64 ...
- 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个人演唱歌曲 ...
- Problem E: 穷游中国在统题 优先队列 + 模拟
http://www.gdutcode.sinaapp.com/problem.php?cid=1049&pid=4 Problem E: 穷游中国在统题 Description Travel ...
随机推荐
- 安装easydict
在运行lightheadrcnn做test时,提示缺少easydict 不知道什么原因,用pip install easydict或者conda install easydict都没有用,不能安装ea ...
- flex布局-弹性布局
弹性布局当前应用的非常广泛,特别是移动端,记得第一次用reactNative 写代码的时候是最开始真正接触Flex布局.1.首先最外层的容器需要指定为display:flex;由于flex的兼容版本还 ...
- Python2.0 与 3.0 的区别
Python 2.0 =默认编码=ASSIC=不支持中文 Python 3.0 =默认编码=UNICODE=默认支持中文 In summary : Python 2.x is legacy, Py ...
- java_jsp和servlet中乱码问题
- Python的布尔值与空值
1.Boolean值(布尔值) 一个布尔值只有Ture.False两种值 b1 =True b2 =False print (b1,b2)>>>True False 2.空值(non ...
- hadoop管理命令
-help 功能:输出这个命令参数手册 -ls 功能:显示目录信息 示例: hadoop fs -ls hdfs://hadoop-server01:9000/ 备注:这些参数中,所有的hdfs ...
- shell练习题2
需求如下: 写一个shell脚本,检查指定的shell脚本是否有语法错误,若有错误,首先显示错误信息,然后提示用户输入q或Q退出脚本, 输入其他内容则直接用vim打开该shell脚本. 参考解答如下 ...
- Python基础学习---位运算符
<< 左移,每移动1位,相当于乘以2 例如:32<<2 等价于:32*4 ==128 >> 右移,每移动1位,相当于除以2 例如: ...
- MySQL安装与启动——Windows系统下
以下书写结合菜鸟教程以及本人理解书写. 数据库下载(开源免费) MySQL数据库下载地址https://dev.mysql.com/downloads/mysql/ 可自由选择版本,一般选择Achiv ...
- Selenium-java测试环境搭建
1.1背景 Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Mozilla ...