题目链接:###

传送门

题目分析:###

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

有一个小优化,在处理操作的时候顺便判一下最后栈里是不是有且仅有一个数,但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. atol的实现【转】

    本文转载自:http://blog.csdn.net/cwqbuptcwqbupt/article/details/7518582 看了atol的实现,发现char到int的转换比较奇怪:c = (i ...

  2. linux命令行快捷键记录

    摘自: http://www.cnblogs.com/webzhangnan/p/3221410.html [移动光标] Ctrl+A 标移到行首.它在多数文本编辑器和 Mozilla 的 URL 字 ...

  3. python多进程执行任务

    https://blog.csdn.net/qq_39694935/article/details/84552076 [Python]multiprocessing Pool 进程间通信共享 直接上代 ...

  4. 页面渲染——简化paint复杂程度和区域

    Paint是填充像素并且最后合成在用户的屏幕上的过程. 通常是在管道中耗费最大的,你要尽可能的避免使用paint. 动画中使用除了transform和opacity的动画属性都将触发paint pai ...

  5. 在Angular.js中的H5页面调用Web api时跨域问题处理

    /// <summary> /// 被请求时 /// 在Angular.js中的H5页面调用Web api时跨域问题处理 /// </summary> /// <para ...

  6. [调试AvantCourier的笔记]

    1.manifest里不能设置target sdk 不然会出现stale error. 2.manifest里要有Internet权限 3

  7. [转载]Dalvik指令集

    这篇文章是转载的,为了便于查找一些指令,贴在这里. 转自:http://blog.csdn.net/canfengxiliu/article/details/20144119 ------------ ...

  8. 「USACO16OPEN」「LuoguP3147」262144(区间dp

    P3147 [USACO16OPEN]262144 题目描述 Bessie likes downloading games to play on her cell phone, even though ...

  9. [TJOI2016 & HEOI2016] 字符串

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4556 [算法] 不难发现 , 对于每个询问        ans = max{ mi ...

  10. WinDbg 调试工具的使用

    概述 项目接近尾声了,可是在运行时会有memory leak(内存泄露) bug.产品在运行一天后,内存增长致1.4G,而我们产品的初始内存才有70M,问题很严重,决定采用WinDbg工具来分析代码问 ...