• [UVA-11995]I Can Guess the Data Structure!


    题意

    判断数据结构类型

    解析

    直接模拟就行

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e4 + 10;
    bool isstack, isque, ispri;
    struct Stack {
    	int top, st[maxn];
    	void clear() {
    		memset(st, 0, sizeof(st));
    		top = 0;
    	}
    	int pop() {
    		if (top == 0) return -1;
    		return st[top--];
    	}
    	void insert(int x) {
    		st[++top] = x;
    	}
    }s;
    priority_queue<int> q;
    struct Queue {
    	int que[maxn], tail, head;
    	void clear() {
    		tail = head = 0;
    		memset(que, 0, sizeof(que));
    	}
    	void insert(int x) {
    		que[++tail] = x;
    	}
    	int pop() {
    		if (tail == head) return -1;
    		return que[++head];
    	}
    }qa;
    
    inline void Insert(int x) {
    	s.insert(x), qa.insert(x), q.push(x);
    }
    
    inline void check(int x) {
    	if (q.size() == 0 || q.top() != x) ispri = false;
    	if (q.size()) q.pop();
    	if (qa.pop() != x) isque = false;
    	if (s.pop() != x) isstack = false;
    }
    
    inline void Output() {
    	int cnt = (int)isstack + (int)ispri + (int)isque;
    	if (cnt >= 2) {
    		puts("not sure");
    	} else if (cnt == 0) {
    		puts("impossible");
    	} else {
    		if (isstack) {
    			puts("stack");
    		} else if (ispri) {
    			puts("priority queue");
    		} else {
    			puts("queue");
    		}
    	}
    }
    
    int main() {
    	int n;
    	while (~scanf("%d", &n)) {
    		s.clear(); qa.clear();
    		while (q.size() > 0) q.pop();
    		isstack = ispri = isque = true;
    		for (int i = 1, opt, x; i <= n; ++ i) {
    			scanf("%d %d", &opt, &x);
    			if (opt & 1) {
    				Insert(x);
    			} else check(x);
    		}
    		Output();
    	}
    }
    
  • 相关阅读:
    proc文件系统面面谈
    如何创建,增加SWAP?
    使用linux中的fdisk无损坏合并分区
    QEMU+Accelerator
    QEMU网络配置
    Linux主机设NAT
    试用QEMU,安装个FreeBSD 5.3
    QEMU简介
    使用Vesa2
    BugFree介绍
  • 原文地址:https://www.cnblogs.com/Alessandro/p/10029219.html
Copyright © 2020-2023  润新知