优先队列 HDOJ 5437 Alisha's Party
题目传送门
题意:一人过生日,很多人排着队送礼物。排队顺序是礼物价值大的优先,如果相等先来的优先。有m次开门,当t个人到了会开门让p个人进门。最后一次让门外的所有人按顺序进门。有q次询问,问第x个进门的人的名字。
分析:很明显的优先队列,首先交给队友做,结果写的搓,无限RE。没办法只能我上,因为要对字符串处理我用了string,思路正确,各种坑都解决了但是很快WA了,我的内心是奔溃的。赛后发现是cin,cout和scanf,printf冲突了 (ios::sync_with_stdio (false);关闭同步)
,以前听说过这个问题,这次终于碰上了!解题思路是先排好序,t也是要排序的,而且有相同的t,没到t个人来,那么入队t个人,注意队列中不一定有p个人,及时break,详细见代码。
代码:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;const int N = 150000 + 10;
const int INF = 0x3f3f3f3f;
struct People {string name;int v, id;People () {}People (string n, int v, int id) : name (n), v (v), id (id) {}bool operator < (const People &r) const {if (v == r.v) return id > r.id;else return v < r.v;}
}p[N], ans[N];
struct Op {int t, p;bool operator < (const Op &r) const {if (t == r.t) return p < r.p;else return t < r.t;}
}a[N];int main(void) {ios::sync_with_stdio (false); //用了这句话,puts都不能用了int T; cin >> T;while (T--) {int n, m, q; cin >> n >> m >> q;for (int i=1; i<=n; ++i) {cin >> p[i].name >> p[i].v; p[i].id = i;}for (int i=1; i<=m; ++i) {cin >> a[i].t >> a[i].p;}sort (a+1, a+1+m);int tot = 0;priority_queue<People> Q;int n1 = 0, n2 = 1;while (!Q.empty () || n1 <= n) {while (n2 <= m && n1 == a[n2].t) {for (int i=1; i<=a[n2].p; ++i) {if (Q.empty ()) break;ans[++tot].name = Q.top ().name; Q.pop ();}n2++;}n1++;if (n1 > n) break;Q.push (People (p[n1].name, p[n1].v, p[n1].id));}while (!Q.empty ()) {ans[++tot].name = Q.top ().name; Q.pop ();}for (int x, i=1; i<=q; ++i) {cin >> x;cout << ans[x].name;if (i == q) cout << endl;else cout << " ";}}return 0;
}
转载于:https://www.cnblogs.com/Running-Time/p/4806322.html
优先队列 HDOJ 5437 Alisha's Party相关推荐
- 贪心+优先队列 HDOJ 5360 Hiking
题目传送门 1 /* 2 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 3 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小, ...
- HDU OJ 5437 Alisha’s Party 2015online A
题目:click here 题意: 邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当最后所有人都到了还会再开一次门,让还没进来的人进来,每 ...
- python相机标定流程图_相机标定——OpenCV-Python Tutorials
目标 我们将了解导致相机失真.扭曲的内因与外因 我们将试着找到这些畸变参数,并消除畸变 基础 如今大量廉价的摄像机导致了很多照片畸变.两个主要的畸变是径向畸变和切向畸变. 由于径向畸变,直线会变弯.距 ...
- hdoj 1434 幸福列车 【优先队列】
幸福列车 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Su ...
- HDU 5437by cyl优先队列
HDU 5437 题意: 有个人要过生日,有k个朋友来拜访,但是他家里实在是有点小,只能依次让朋友进门,有m个特定的时间,每次可以进入p个人,每一个朋友来会带礼物,价值为v.主人还是比较贪心的,他 ...
- 大一寒假培训(七)——队列与优先队列
文章目录 队列的定义 队列的基本操作 周末舞会 取纸牌游戏 海港(NOIP2016普及组真题) Blash数集-队列-set 优先队列 优先队列的定义 优先队列的定义方法 用结构体定义优先队列(重载函 ...
- python 优先队列_python实现最大优先队列 python优先级队列如何最大值优先
python优先级队列如何最大值优先 啥???????队列默认就有优先级即使告别爱情的时候,也希望你一切都好;小编不再爱你的时候,也许不是小编不爱你,只是,小编已不能再爱你. python3 优先队列 ...
- 优先队列的应用 C++实现
优先队列的应用 C++实现 优先队列可以用堆来实现, 堆底层可以用数组表示, 通过索引关系,可以表示成一颗二叉完全树 C++的STL提供了相应的容器适配器 包含在queue头文件中 下面通过一道题来看 ...
- ccf 交通规划(迪杰斯特拉优先队列模板)
什么跟什么就是刘汝佳小白书迪杰斯特拉队列的优先队列法 #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f ...
最新文章
- 安装oracle11的时候 提示ORA-28056 未能将审计记录写入windows事件日志,这是怎么回事啊
- Visual Studio 2017强制更新方法
- linux 测试vim编译器_推荐几个好用的在线编译器
- 时间控件_Selenium时间控件的处理
- 数据挖掘之随机事件与随机变量
- 如何用python中的turtle库画三角形_Python如何使用turtle库绘制图形
- SpringCloud学习笔记012---SpringBoot启动时Caused by: java.lang.NoClassDefFoundError:
- NioEventLoopGroup 源码分析
- maven仓库中的LastUpdated文件删除脚本
- java zip_Java压缩技术(二) ZIP压缩——Java原生实现
- 浅谈Java内存模型——JVM
- html5 人物画像,人物头像画不准?掌握这五步,让你把人物头像画准,画像
- 冰桶挑战,正在朝功利化和畸形化方向“扩散”
- 杀毒软件 McAfee 创始人自杀,75 年传奇人生画下句号
- html制作网站 知乎,做短视频运营看那些网站(推荐这些短视频素材网站)
- 业务中台和数据中台的区别
- 监控摄像头上滤光片的作用是什么
- R语言学习笔记 ②求一组数据的平均数、中位数、标准差和范围
- 有哪些广告联盟值得推荐?
- Linux内核源码分析《进程管理》