[NOIP2017] 时间复杂度 (模拟,栈)
题目链接
Solution
用栈进行模拟.
记录一个 \(map\) 来看循环变量有没有用过.
对于每一次入栈都加信息.
出栈直接将 \(top\) 减一下.
反正一堆乱七八糟的东西瞎搞...
注意条件如果循环内均为常数,算作 \(O(1)\).
Code
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
map<char,bool>v;
int sta[108],top,sum[108];
char k[108];
int cal(string s)
{
if(s=="n")return inf;
int w=0,i=0;
while(s[i]>='0'&&s[i]<='9')
w=w*10+s[i]-'0',i++;
return w;
}
int work(int n)
{
top=0; int flag=0,ans=1;
for(char i='a';i<='z';i++)v[i]=0;
while(n--)
{
char ch,i; string x,y;
cin>>ch; sum[0]=1;
if(ch=='F')
{
cin>>i;
if(v[i])flag=-1; v[i]=1;
cin>>x; cin>>y;
if(flag==-1)continue;
int w,x1=cal(x),y1=cal(y);
if(x1==y1)w=1;
if(x1>y1)w=0;
if(x1<y1)
{
if(x1==inf||y1==inf)
w=2;
else w=1;
}
sta[++top]=w; k[top]=i;
if(w==1)sum[top]=sum[top-1];
if(w==2)sum[top]=sum[top-1]+1;
if(w==0)sum[top]=0;
if(sum[top-1]==0)sum[top]=0;
flag=max(flag,sum[top]);
}
if(ch=='E')
{
if(flag==-1)continue;
v[k[top]]=0;
top--;
}
}
if(flag==0)flag++;
if(top!=0)flag=-1;
return flag-1;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int L,cost=0; string T;
cin>>L>>T;
if(T[2]=='1')cost=0;
else{
int i=0;
while(T[i]>'9'||T[i]<'0')i++;
while(T[i]>='0'&&T[i]<='9'){cost=cost*10+T[i]-'0';i++;}
}
int flag=work(L);
if(flag<0)cout<<"ERR"<<endl;
else
if(flag==cost)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
[NOIP2017] 时间复杂度 (模拟,栈)的更多相关文章
- luoguP3952 [NOIP2017]时间复杂度 模拟
原本只是想看下多久能码完时间复杂度 然后在30min内就码完了,然后一A了???? 首先,这题完全可以离线做 我们先把所有的操作读完,判断合不合法之后,再去判断和标准答案的关系 具体而言 把所有的操作 ...
- [NOIP2017]时间复杂度(模拟)
sscanf读入数字,getline(cin,string)读一整行,其余暴力模拟即可. #include<cstdio> #include<string> #include& ...
- 【比赛】NOIP2017 时间复杂度
恶心的模拟题,考场上犯了一堆错误,多组数据清空没清完.数组开小...民间都是50分,结果CCF90.. 考完后随便改改就过了,还好只少了10分,如果真的是50,我估计会疯掉. 因为考场的时候没写好,所 ...
- [Luogu 3952] NOIP2017 时间复杂度
[Luogu 3952] NOIP2017 时间复杂度 一年的时间说长不长,说短,也不短. 一年之内无数次觉得难得可怕的题目,原来也就模拟这么回事儿. #include <cstdio> ...
- ACM/ICPC 之 用双向链表 or 模拟栈 解“栈混洗”问题-火车调度(TSH OJ - Train)
本篇用双向链表和模拟栈混洗过程两种解答方式具体解答“栈混洗”的应用问题 有关栈混洗的定义和解释在此篇:手记-栈与队列相关 列车调度(Train) 描述 某列车调度站的铁道联接结构如Figure 1所示 ...
- java 16 - 5 LinkedList模拟栈数据结构的集合
请用LinkedList模拟栈数据结构的集合,并测试 题目的意思是: 你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟. package cn_LinkedList; impo ...
- hdu 4699 Editor 模拟栈
思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!! 代码如下: #include<cstdio> #include<cstring> ...
- 【DataStructure In Python】Python模拟栈和队列
用Python模拟栈和队列主要是利用List,当然也可以使用collection的deque.以下内容为栈: #! /usr/bin/env python # DataStructure Stack ...
- 第一回写的用arraylist模拟栈操作
package hashMap; import java.util.ArrayList; import d.Student; /** * 用ArrayList模拟栈操作 * @author zhuji ...
随机推荐
- python 列表 字典转json
一.Dictionary 转为JSON 将dict转为JSON,这里利用包json import jsonaItem = {}aItem["id"] = "2203&qu ...
- 使用vs2013打开VS2015的工程文件的解决方案(适用于大多数vs低版本打开高版本)
前言:重装系统前我使用的是vs2015(有点装*),由于使用2015实在在班上太另类了, 导致我想在其他同学的vs下看一看我写的代码都无法达成! 而且最关键的是交作业的时候,老师的2013也没有办法打 ...
- cocos2dx 3.x lua 网络加载并且保存资源(unix、linux)
#ifndef __DazzleParkour__TextLoader__ #define __DazzleParkour__TextLoader__ #include <stdio.h> ...
- 【线段树 泰勒展开】Codechef April Challenge 2018 Chef at the Food Fair
第一次写泰勒展开:本地和CC差距好大 题目大意 大厨住的城市里办了一场美食节.一条街上开设了$N$个摊位,编号为$1∼N$.这天开始时,第$i$个摊位的食物会导致食物中毒的概率是$P_i$.在这一天中 ...
- k8s资源指标API及metrics-server资源监控
简述: 在k8s早期版本中,对资源的监控使用的是heapster的资源监控工具. 但是从 Kubernetes 1.8 开始,Kubernetes 通过 Metrics API 获取资源使用指标,例如 ...
- k8s的资源限制及资源请求
容器的资源需求及限制: 需求:requests ##定义容器运行时至少需要资源 限制:limits ##定义容器运行时最多能分配的资源 requests:pod.spec.con ...
- centos7无法切换startx
centos光盘安装后,显示命令行模式,通过startx无法进入图形界面? 解决方法:1.使用yum grouplist查看,根据显示的结果采用不同的界面格式,我用的是 yum groupinstal ...
- 【windows】共享文件夹设置
控制面板\网络和 Internet\网络和共享中心\高级共享设置 在当前的域\公用\家庭网络 下文件和打印机共享开关打开 现在可以在 计算机-网络 里面看到共享的计算机啦 选中自己想要分享的文件,右键 ...
- PAT Basic 1080
1080 MOOC期终成绩 对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分 ...
- php msql 表单
http://www.cnblogs.com/webers/p/3849707.html