题目链接:###

传送门

题目分析:###

大模拟,先得存操作,然后再处理每个数……

有一个小优化,在处理操作的时候顺便判一下最后栈里是不是有且仅有一个数,但A完了才想起来,所以就算了……

总之就是个模拟题……没什么算法,但细节很多我就是来水个博客

代码:###

#include<bits/stdc++.h>
using namespace std;
inline long long read(){
int cnt=0,f=1;char c;
c=getchar();
while(!isdigit(c)){
if(c=='-')f=-f;
c=getchar();
}
while(isdigit(c)){
cnt=cnt*10+c-'0';
c=getchar();
}
return cnt*f;
}
int n;
char s[200];
int opr[20005],tot=0;
long long sta[20005];
long long x,top=1;
long long a[20005],u=0; long long p=-1;
bool flag=false;
bool check1(){
if(u>1000000000||-u>1000000000)return false;
else return true;
}
bool check2(){
if(top>1||top==0)return false;
else return true;
}
int main(){
memset(opr,0,sizeof(opr));
memset(a,128,sizeof(a)); while(1){
scanf("%s",s+1);
if(s[1]=='E')break;
else {
if(s[1]=='N'&&s[2]=='U'){
opr[++tot]=-10;
a[tot]=read();
}
if(s[1]=='P')opr[++tot]=2;
if(s[1]=='I')opr[++tot]=3;
if(s[1]=='D'&&s[2]=='U')opr[++tot]=4;
if(s[1]=='S'&&s[2]=='W')opr[++tot]=5;
if(s[1]=='A')opr[++tot]=6;
if(s[1]=='S'&&s[2]=='U')opr[++tot]=7;
if(s[1]=='M'&&s[2]=='U')opr[++tot]=8;
if(s[1]=='D'&&s[2]=='I')opr[++tot]=9;
if(s[1]=='M'&&s[2]=='O')opr[++tot]=10;
}
}
n=read();
while(n--){
flag=false;
top=0;
x=read();
sta[++top]=x;
for(register int i=1;i<=tot;i++){
if(opr[i]==-10){
sta[++top]=a[i];
if(a[i]>1000000000||-a[i]>1000000000){flag=true;break;}
}
if(opr[i]==2){
if(!top)flag=true;
else top--;
}
if(opr[i]==3){
if(!top)flag=true;
else
sta[top]=-sta[top];
}
if(opr[i]==4){
if(!top)flag=true;
else{
++top;
sta[top]=sta[top-1];
}
}
if(opr[i]==5){
if(!top||top==1)flag=true;
else swap(sta[top],sta[top-1]);
}
if(opr[i]==6){
if(!top||top==1)flag=true;
else{
u=sta[top]+sta[top-1];
sta[--top]=u;
if(!check1())flag=true;
}
}
if(opr[i]==7){
if(!top||top==1)flag=true;
else{
u=sta[top-1]-sta[top];
sta[--top]=u;
}
if(!check1())flag=true;
}
if(opr[i]==8){
if(!top||top==1)flag=true;
else{
u=sta[top-1]*sta[top];
sta[--top]=u;
}
if(!check1())flag=true;
}
if(opr[i]==9){
if(!top||top==1||sta[top]==0)flag=true;
else{
u=sta[top-1]/sta[top];
sta[--top]=u;
}
if(!check1())flag=true;
}
if(opr[i]==10){
if(!top||top==1)flag=true;
else{
u=sta[top-1]%sta[top];
sta[--top]=u;
}
if(!check1())flag=true;
}
}
if(!check2())flag=true;
if(!check1())flag=true;
if(flag)printf("ERROR\n");
else printf("%lld\n",sta[top]);
}
return 0;
}

[洛谷P2186] 小Z的栈函数的更多相关文章

  1. 洛谷 2186 小Z的栈函数

    https://www.luogu.org/problem/show?pid=2186 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: N ...

  2. P2186 小Z的栈函数

    P2186 小Z的栈函数 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. INV:将栈顶 ...

  3. Bzoj2038/洛谷P1494 小Z的袜子(莫队)

    题面 Bzoj 洛谷 题解 考虑莫队算法,首先对询问进行分块(分块大小为\(sqrt(n)\)),对于同一个块内的询问,按照左端点为第一关键字,右端点为第二关键字排序.我们统计这个区间内相同的颜色有多 ...

  4. 洛谷——P2117 小Z的矩阵

    P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...

  5. 洛谷P2188 小Z的 k 紧凑数

    P2188 小Z的 k 紧凑数 题目描述 小 Z 在草稿纸上列出了很多数,他觉得相邻两位数字差的绝对值不超过 k 的整数特别奇特,称其为 k 紧凑数. 现在小 Z 想知道 [l,r] 内有多少个 k ...

  6. 洛谷—— P2117 小Z的矩阵

    https://www.luogu.org/problemnew/show/2117 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1 ...

  7. 洛谷 P2117 小Z的矩阵

    P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...

  8. 洛谷 2187 小Z的笔记

    [题解] DP.  设f[i]表示前i个字母,保留第i个字母,最多可以保留多少个字母:设g[i]为当前字母为i的位置对应的f的最大值. 转移方程就是f[i]=max(f[i], g[j]+1) (j与 ...

  9. [洛谷P2107] 小Z的AK计划

    题目类型:贪心,堆 传送门:>Here< 题意:给出\(N\)个房间,每个房间距离起点的距离为\(x[i]\),每个房间可以选择进去和不进去,如果进去了那么要\(t[i]\)秒后才能出来. ...

随机推荐

  1. backbone测试代码

    一.入门测试 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  2. 使用libcurl进行HTTP GET操作

    Working example how to do a GET request with libcurl and save it to a string variable for future use ...

  3. c/c++通用内存泄漏检测框架GMFD(General Memory Fault Detection Framework)

    http://qa.baidu.com/blog/?p=171 1 背景: x86平台有完善的用户态检测内存工具比如valgrind等,可以监控程序运行中详细的内存信息,从而精确定位内存问题.然而随着 ...

  4. 浏览器端JS导出EXCEL

    浏览器端JS导出EXCEL FileSaver.js 实现了在本身不支持 HTML5 W3C saveAs() FileSaver 接口的浏览器支持文件保存.FileSaver.js 在客户端保存文件 ...

  5. coeforces 665D D. Simple Subset(最大团orsb题)

    题目链接: D. Simple Subset time limit per test 1 second memory limit per test 256 megabytes input standa ...

  6. [WC 2006] 水管局长

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2594 [算法] 首先离线 , 将删边操作转化为倒序加边 假设我们已经维护出了一棵最小 ...

  7. 21.java方法详解

    public class MethondTest07{ //入口 public static void main(String[] args){ A.m1(); //error:若方法名字的前面什么都 ...

  8. 使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题

    今天碰到这样一个问题:当前台以JSON格式向后台传递数据的时候,对于数据中的日期属性,无法正常转换为相应的Date属性.JSON数据是这样的:{"birthday":"1 ...

  9. java如何写接口给别人调用

    参考:https://blog.csdn.net/greatkendy123/article/details/52818466 java web开发(二) 接口开发

  10. 2 pyspark学习----基本操作

    1 spark的python环境部署可以参照上面一篇哟.http://www.cnblogs.com/lanjianhappy/p/8705974.html 2 pyspark的基本操作. # cod ...