博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P5375 【[THUPC2019]组合数据结构问题】题解
阅读量:7071 次
发布时间:2019-06-28

本文共 1223 字,大约阅读时间需要 4 分钟。

这个题看上去很有高论,但其实没有那么复杂。只需要分别模拟队列、栈、大根堆和小根堆的处理过程即可。

细节和注释都在代码里了。

$ \rm code $

# pragma GCC optimize (2)# include 
using namespace std;queue
que;stack
stk;priority_queue
heap1;priority_queue
, greater
> heap2;// 使用 C++ 的 STL 库,分别定义四个数据结构:队列、栈、大根堆和小根堆.int main() { ios::sync_with_stdio(0), cin.tie(0); int N; bool flag[5]; memset(flag, true, sizeof(flag)); cin >> N; while(N--) { int opt, x; cin >> opt >> x; if(opt == 1) { if(flag[1]) que.push(x); if(flag[2]) stk.push(x); if(flag[3]) heap1.push(x); if(flag[4]) heap2.push(x); // 如果黑箱里暂时可能是这个数据结构的话且opt为1,那么就插入x // 这里模拟的是插入操作. } else { if(que.empty()) flag[1] = false; if(stk.empty()) flag[2] = false; if(heap1.empty()) flag[3] = false; if(heap2.empty()) flag[4] = false; // 如果该数据结构已经为空,直接把flag改一下 if(flag[1]) { if(que.front() != x) flag[1] = false; que.pop(); } if(flag[2]) { if(stk.top() != x) flag[2] = false; stk.pop(); } if(flag[3]) { if(heap1.top() != x) flag[3] = false; heap1.pop(); } if(flag[4]) { if(heap2.top() != x) flag[4] = false; heap2.pop(); } // 模拟删除操作. } } for(int i = 1; i <= 4; ++i) flag[i] ? puts("Yes") : puts("No"); // 输出 return 0;}

 

转载于:https://www.cnblogs.com/Xray-luogu/p/11006400.html

你可能感兴趣的文章
如何实现类似微信朋友圈的feed功能(第一版)
查看>>
安装NODEJS的三种方法
查看>>
如何让Mac完全读写NTFS格式分区
查看>>
百万级很快的分页联合
查看>>
手机内存卡修复工具软件大师免费试用版
查看>>
获取屏蔽符号<!-- -->屏蔽的字符串的代码
查看>>
struct和typedef struct
查看>>
Notification启动Activity, 恢复任务栈
查看>>
使用Python进行并发编程
查看>>
自动机器学习简述(AutoML)
查看>>
iPhone X适配
查看>>
虚拟化笔记
查看>>
[vim]-vim基础
查看>>
JAVA 8入门(一)Lambda表达式
查看>>
resin集成eclipse开发
查看>>
将Excel文件中的数据导入到mysql【Excel中拼sql】
查看>>
H5移动端知识点
查看>>
【js与jquery】网站更换皮肤功能
查看>>
Ubuntu ssh连接root验证错误
查看>>
汉字转化为拼音
查看>>