【暑假】[实用数据结构]UVa11995 I Can Guess the Data Structure!

UVa11995  I Can Guess the Data Structure!

思路:边读边模拟,注意empty的判断!

代码如下:

#include<iostream>
#include<queue>
#include<stack>
using namespace std;

int main(){
queue<int> q;
priority_queue<int> pri_q;
stack<int> sta;
int n;
  while(cin>>n){
     while(!q.empty()) q.pop();        //清空data
     while(!pri_q.empty()) pri_q.pop();
     while(!sta.empty()) sta.pop();

     int a,b,c; a=b=c=1;
     while(n--) {
         int op,x;
         cin>>op>>x;
         if(op == 1){
             if(a) q.push(x);
            if(b) pri_q.push(x);
            if(c) sta.push(x);
         }
         else {
             if(a) if(q.empty()) a=0; else {a= q.front()==x; q.pop();}
             if(b) if(pri_q.empty()) b=0; else{b= pri_q.top()==x; pri_q.pop();}
             if(c) if(sta.empty()) c=0; else{c= sta.top()==x; sta.pop();}
         }
     }
     if(!a && !b &&!c) cout<<"impossible";
     else
      if((a&&b) || (a&&c) ||(b&&c)) cout<<"not sure";
      else{
          if(a) cout<<"queue";
          else if(b) cout<<"priority queue";
          else cout<<"stack";
      }
     cout<<"\n";
  }
  return 0;
}
时间: 2024-10-10 23:04:50

【暑假】[实用数据结构]UVa11995 I Can Guess the Data Structure!的相关文章

uva11995 I Can Guess the Data Structure!

就是用STL来模拟就行了,但是我有一个地方没注意坑了好几次:访问STL封装好的数据结构中的元素之前先判断容器是不是为空,否则会Runtime Error. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<cmath> #include<map> #include<set&

(DS 《算法入门经典》)UVA 11995 I Can Guess the Data Structure!(判断是哪一种数据结构)

这道题比较简单. 需要注意的一些地方: 1.impossible: 所有的标记量都是false 2.not sure:同时存在2种情况或者同时存在三种情况. Problem I I Can Guess the Data Structure! There is a bag-like data structure, supporting two operations: 1 x Throw an element x into the bag. 2 Take out an element from th

UVA 11995 - I Can Guess the Data Structure! (基本数据结构)

UVA 11995 - I Can Guess the Data Structure! 题目链接 题意:给定一堆的操作,问这个数据结构是什么 思路:水题,稍微模拟一下就可以了 代码: #include <cstdio> #include <cstring> #include <stack> #include <queue> using namespace std; const int N = 1005; int n, q[N][2]; bool is_sta

【模拟+数据结构】UVA 11995 I Can Guess the Data Structure!

[模拟+数据结构]UVA 11995 I Can Guess the Data Structure! 题目大意 给出一系列操作,包含操作数和操作码,判断符合这一系列操作返回值的数据结构类型(栈.队列.优先队列) – 说一下思路 拿这三种数据结构去模拟一下就可以了 [注意]栈顶 stack.top() 队首 queue.front() 堆顶 priority_queue.top() 堆又叫做优先队列heap == priority_queue 参考代码 #include<bits/stdc++.h

【暑假】[实用数据结构]UVAlive

题目:   Dominating Patterns Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description The archaeologists are going to decipher a very mysterious ``language". Now, they know many language patterns; each patt

【暑假】[实用数据结构]UVAlive 3026 Period

UVAlive 3026 Period 题目: Period Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive),

【暑假】[实用数据结构]KMP

KMP算法 KMP算法是字符串匹配算法,可以在O(n)的时间完成,算法包含两部分,分别是:构造适配函数与两串匹配. 失配边的使用大大提高了算法效率,可以理解为已经成功匹配的字符不在重新匹配,因为我们已经知道它是什么,对应到算法中 匹配失败后应该在最大前缀之后继续匹配,因为某后缀已与最大前缀匹配成功而不用重新比较. 以下为代码实现: 1 const int maxn = 1000 + 5; 2 3 void getFail(char* P,int* f){ //构造失配边 4 int n=strl

【暑假】[实用数据结构]UVAlive 3942 Remember the Word

UVAlive 3942 Remember the Word 题目: Remember the Word Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description Neal is very curious about combinatorial problems, and now here comes a problem about words. Know

【暑假】[实用数据结构] AC自动机

Aho-Corasick自动机 AC自动机用于解决文本一个而模板有多个的问题. 作者所给模板如下: 1 struct AhoCorasickAutomata { 2 int ch[MAXNODE][SIGMA_SIZE]; 3 int f[MAXNODE]; // fail函数 4 int val[MAXNODE]; // 每个字符串的结尾结点都有一个非0的val 5 int last[MAXNODE]; // 输出链表的下一个结点 6 int cnt[MAXS]; 7 int sz; 8 9