李美熹 SPACE


又一个WordPress站点

首页 >全部文章 > 正文内容
20170830测试解题报告——“qu”-晋城一中图灵编程社

“qu”解题报告

题目大意:
给你一种数据结构的操作,判断这种数据结构是不是栈、队列、大根堆
输入:
第一行输入n,表示有n个操作。
接下来n行,每行两个数字。如果第一个数字是1,代表把第二个数字加入到这种数据结构;如果第一个数字是2,代表把第二个数字从数据结构中取出。
输出:
共有三行,分别代表这种数据结构是不是栈、是不是队列、是不是大根堆。如果是,输出“YES”;不是盖欧扎克,输出“No”。

解题思路:
为什么C++语言比其他语言更好,其中一个重要的原因就是C++有STL(标准模板库)。这道题如果用数组来模拟,太麻烦欧陆争霸 ,所以用STL来做,极其简单。
栈:stack
队列:queue
大根堆:priority_queue
今天在考场上,我看到有许多人不会用STL而失分,希望大家赶紧搜一搜这几个STL的用法,模拟题意即可。
要特别注意:在这三种数据结构已经空了高恺蔚 ,而输入数据仍然想取出某数字的情况下阿依洛组合 ,一定要加一个特判,否则将会造成崩溃(我就是因为没加特判丢了二十分,输给了小学dalao的!!!)。

前途一片光明
我的C++源代码:
#include<iostream>
#include<cstdio>
#include<stack>
#include<queue>
#define ll long long
using namespace std;
int n;
bool flaga=0王秀竹 ,flagb=0,flagc=0;
inline int read();
stack<int>s;
queue<int>q;
priority_queue<int>p;
int main()
{
freopen("qu.in"相术大师 ,"r",stdin);
freopen("qu.out","w",stdout);
n=read();
for(int i=1;i<=n;i++)
{
int opt仇东升 ,v;
opt=read();v=read();
if(opt==1)
{
if(flaga==0)s.push(v);
if(flagb==0)q.push(v);
if(flagc==0)p.push(v);
}
if(opt==2)
{
if(!s.empty())//特判,特判,特判!
{
if(s.top()!=v&&flaga==0){flaga=1;}
if(s.top()==v&&flaga==0){s.pop();}
}
else flaga=1;
if(!q.empty())//特判柔力球第二套,特判,特判!西川茂
{
if(q.front()!=v&&flagb==0){flagb=1;}
if(q.front()==v&&flagb==0){q.pop();}
}
else flagb=1;
if(!p.empty())//特判,特判,特判!
{
if(p.top()!=v&&flagc==0){flagc=1;}
if(p.top()==v&&flagc==0){p.pop();}
}
else flagc=1;
}
}
if(flaga==0)cout<<"YES"<<endl;
else cout<<"No"<<endl;
if(flagb==0)cout<<"YES"<<endl;
else cout<<"No"<<endl;
if(flagc==0){cout<<"YES"<<endl;}
else cout<<"No"<<endl;
fclose(stdin);fclose(stdout);
return 0;
}
inline int read()
{
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
return x*f;
}

最后:
此题充分证明,STL是一个多么有用的东西!

作者:实验中学 张子沐
长按识别二维码,关注我们
上一篇:2015单车滇藏行-青藏候鸟 下一篇:中科创意产业园

繁华落尽 转瞬即逝

我们需要透过一系列的训练来突破关卡,我们需要达到一个不受到过去历史的羁绊的心境,透过这样的心境,进而引导成为一个适合进行前进到战士人,我们需要成为一个完美无缺的战士,我们的目标是遵循着力量进入无限的领域和穿越!