题目链接:###

传送门

题目分析:###

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

有一个小优化,在处理操作的时候顺便判一下最后栈里是不是有且仅有一个数,但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. POJ 2309 BST(二叉搜索树)

    BST Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8657   Accepted: 5277 Description C ...

  2. POJ1006 Biorhythms —— 中国剩余定理

    题目链接:https://vjudge.net/problem/POJ-1006 Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total ...

  3. HDU5965 扫雷 —— dp递推

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5965 题解: 1. 用a[]数组记录第二行的数字,用dp[]记录没一列放的地雷数.如果第一列的地雷数d ...

  4. mysql初始化命令及其他命令

    这个问题纠结了我两年: 为了配置my.cnf中 undo的 参数生效,以及生成undo文件,使用一下命令 /usr/bin/mysql_install_db   --defaults-file=/et ...

  5. hdu 1047 Integer Inquiry(大数)

    题意:整数大数加法 思路:大数模板 #include<iostream> #include<stdio.h> #include<stdlib.h> #include ...

  6. keras中的Flatten和Reshape

    最近在看SSD源码的时候,就一直不理解,在模型构建的时候如果使用Flatten或者是Merge层,那么整个数据的shape就发生了变化,那么还可以对应起来么(可能你不知道我在说什么)?后来不知怎么的, ...

  7. [转载] Android raw与assets区别

    *res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. *res/raw和assets的不同点:1.res/raw中的文件会被映射到R ...

  8. java.io.FileNotFoundException:/mnt/sdcard/......(Permission denied)

    今天在实现下载模块的时候,从服务器下载apk安装的时候总是不成功. 打开LogCat查看日志,发现在访问sdcard的时候出现Permission denied的情况. 百度之后发现原因是没有添加权限 ...

  9. tcpdump 探测器分析

    注:默认情况下,tcpdump临听它遇见的第一个网络接口,如果它选择了错误的接口,可以-i标志强行指定接口,如果DNS不能用,或者只是不希望tcpdump进行名字查找,请使用-n选项,这个选项(-n) ...

  10. CF 622 F The Sum of the k-th Powers —— 拉格朗日插值

    题目:http://codeforces.com/contest/622/problem/F 设 f(x) = 1^k + 2^k + ... + n^k 则 f(x) - f(x-1) = x^k ...