[洛谷P2186] 小Z的栈函数
题目链接:###
题目分析:###
大模拟,先得存操作,然后再处理每个数……
有一个小优化,在处理操作的时候顺便判一下最后栈里是不是有且仅有一个数,但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的栈函数的更多相关文章
- 洛谷 2186 小Z的栈函数
https://www.luogu.org/problem/show?pid=2186 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: N ...
- P2186 小Z的栈函数
P2186 小Z的栈函数 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. INV:将栈顶 ...
- Bzoj2038/洛谷P1494 小Z的袜子(莫队)
题面 Bzoj 洛谷 题解 考虑莫队算法,首先对询问进行分块(分块大小为\(sqrt(n)\)),对于同一个块内的询问,按照左端点为第一关键字,右端点为第二关键字排序.我们统计这个区间内相同的颜色有多 ...
- 洛谷——P2117 小Z的矩阵
P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...
- 洛谷P2188 小Z的 k 紧凑数
P2188 小Z的 k 紧凑数 题目描述 小 Z 在草稿纸上列出了很多数,他觉得相邻两位数字差的绝对值不超过 k 的整数特别奇特,称其为 k 紧凑数. 现在小 Z 想知道 [l,r] 内有多少个 k ...
- 洛谷—— P2117 小Z的矩阵
https://www.luogu.org/problemnew/show/2117 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1 ...
- 洛谷 P2117 小Z的矩阵
P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...
- 洛谷 2187 小Z的笔记
[题解] DP. 设f[i]表示前i个字母,保留第i个字母,最多可以保留多少个字母:设g[i]为当前字母为i的位置对应的f的最大值. 转移方程就是f[i]=max(f[i], g[j]+1) (j与 ...
- [洛谷P2107] 小Z的AK计划
题目类型:贪心,堆 传送门:>Here< 题意:给出\(N\)个房间,每个房间距离起点的距离为\(x[i]\),每个房间可以选择进去和不进去,如果进去了那么要\(t[i]\)秒后才能出来. ...
随机推荐
- 第二篇:python基础之核心风格
阅读目录 一.语句和语法 二.变量定义与赋值 三.内存管理 内存管理: 引用计数: 简单例子 四.python对象 五.标识符 六.专用下划线标识符 七.编写模块基本风格 八.示范 一.语句和语法 # ...
- linux应用之vi编辑器的安装、配置及用法
vi(vim是其高级版本)是linux系统上用于文本编辑的一个应用.它的功能十分强大,在日常的系统管理活动或编程中用得都很多.所以用好vi是很有必要的. 学习vi主要学的知识点有:1.vi的配置.2. ...
- 004 - 修改Pycharm默认启动打开最近的项目
随着项目的增多, 可能会使用到不同的项目, 而有的时候我们导入项目到新一个窗口中之后, 下一次打开Pycharm就变成之前导入的那个项目了 那么之前我们的项目怎么找到呢? 修改一下Pycharm启动默 ...
- [CTSC 2018] 混合果汁
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5343 [算法] 对于每组询问 , 首先二分答案 显然 , 最优策略为优先选择价格低的 ...
- poj1236学校网络——连通块
题目:http://poj.org/problem?id=1236 通过传输文件的特点可以看出要先求强联通分量,缩点: 问题1:即缩点后入度为0的点,从它们开始传文件可以传给所有学校: 问题2:对于所 ...
- htop 详细功能使用简介
一.htop 简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (for ...
- CodeForces 1103E. Radix sum
题目简述:对任意两个(正)十进制数$a = \overline{a_{k-1}\dots a_1a_0}$和$b = \overline{b_{k-1}\dots b_1b_0}$,定义其[十进制按位 ...
- C++ windows 多线程 互斥锁
#include <opencv2/core/version.hpp> #include <opencv2/calib3d/calib3d.hpp> #include < ...
- HDFS源码分析四-HDFS Client
4. HDFS Client ( 未完待续 ) 目录: 4.1 认识 DFSClient ( 未完待续 ) 4.2 输入流 ( 未完待续 ) 4.3 输出流 ( 未完待续 ) 4.4 Distribu ...
- jQuery 字母大小写转换
"ABC".toLowerCase()//转小写 "abc".toUpperCase()//转大写