博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
qu(判定操作序列)NOIP模拟 数据结构判断 模拟
阅读量:6988 次
发布时间:2019-06-27

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

【问题描述】 给你一个操作序列,问这个维护操作序列的数据结构是哪一种?

【输入格式】 第一行是一个正整数?代表操作数目。 接下来?行,每行两个正整数???, ?。如果??? = 1,代表我们将?加入数据结构;如果??? = 2,代表我们从数据结构中取出了一个元素,这个元素的值是?。

【输出格式】 输出三行,第一行代表数据结构是否可能是栈,第二行代表数据结构是否可 能是队列,第三行代表数据结构是否可能大根堆。每一行的结果都只可能是“YES” 或者“No”。

根据题意,建立三种数据结构:队列、优先队列(本质是大根堆)和栈,然后模拟即可。

坑点有两个。

一个是,当数据全部弹出后,还有弹出操作,那一定不满足任意数据结构,三个都是No

第二个,题目的YES是全部大写的,但是No的o是小写的。

附上代码

#include
#include
using namespace std;template
inline void read(T &_a){ bool f=0;int _ch=getchar();_a=0; while(_ch<'0' || _ch>'9'){
if(_ch=='-')f=1;_ch=getchar();} while(_ch>='0' && _ch<='9'){_a=(_a<<1)+(_a<<3)+_ch-'0';_ch=getchar();} if(f)_a=-_a;}int n,opt,v,stack[10001],head;bool ansq=true,anspq=true,ansstk=true;queue
q;priority_queue
pq;int main(){ freopen("qu.in","r",stdin); freopen("qu.out","w",stdout); read(n); for (register int i=1;i<=n;++i) { read(opt); read(v); if(opt==1) { if(ansq) q.push(v); if(ansstk) stack[++head]=v; if(anspq) pq.push(v); } else { if(ansstk) { if(head&&stack[head]==v) --head; else ansstk=false; } if(ansq) { if(!q.empty()&&q.front()==v) q.pop(); else ansq=false; } if(anspq) { if(!pq.empty()&&pq.top()==v) pq.pop(); else anspq=false; } } } printf("%s\n%s\n%s",ansstk?"YES":"No",ansq?"YES":"No",anspq?"YES":"No"); return 0;}

 

转载于:https://www.cnblogs.com/jaywang/p/7755945.html

你可能感兴趣的文章
docker tomcat 环境构建
查看>>
EF Core CodeFirst实践 ( 使用MS SqlServer)
查看>>
MGR 架构 ~ DBA相关运维管理
查看>>
vue中父子组件以及兄弟组件的传值情况?
查看>>
Oracle 使用RMAN COPY 移动 整个数据库 位置 示例
查看>>
Sencha toucha2中设置文本框默认提示文字的PlaceHolder属性的颜色
查看>>
PHP模拟POST提交数据三种方式
查看>>
共享纸巾更换主板代码分析 共享纸巾主板更换后的对接代码
查看>>
页面添加友盟(CNZZ)统计和事件追踪
查看>>
新maven项目创建JSP出现小红叉报错 javax.servlet.http.HttpServlet not found
查看>>
跨域问题
查看>>
两年之中
查看>>
JQuery 获取验证码倒计时
查看>>
scala(13)-----集合(Collection)-------元组
查看>>
线段树模板
查看>>
tomcat下发布项目,遇到的问题总结
查看>>
Node开发入门
查看>>
持续集成①安装部署jenkins从git获取代码
查看>>
zabbix添加对haproxy的监控
查看>>
WP开发笔记——程序的退出方法
查看>>