【题目链接】

点击打开链接

【算法】

其实这就是一道模拟题啦!

在判error和计算时间复杂度时,我们需要用栈这种数据结构

【代码】

这题的代码还是有些难写的,写的时候一定要有条理!

#include<bits/stdc++.h>
using namespace std;
#define MAXL 100
const int INF = 2e9; int T,n;
char opt[MAXL+],value[MAXL+];
int l[MAXL+],r[MAXL+]; template <typename T> inline void read(T &x) {
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
template <typename T> inline void write(T x) {
if (x < ) { putchar('-'); x = -x; }
if (x > ) write(x/);
putchar(x%+'');
}
template <typename T> inline void writeln(T x) {
write(x);
puts("");
} inline int get() {
int ret = ;
bool b = true;
getchar();
char c = getchar();
while (c != ')') {
if (c == '^') b = false;
if (isdigit(c)) ret = (ret << ) + (ret << ) + c - '';
c = getchar();
}
getchar();
if (b) return ;
else return ret;
} inline void getstr(int pos) {
char c = getchar();
while (c != 'F' && c != 'E') c = getchar();
opt[pos] = c;
} inline void getinfo(int pos) {
int i,len;
char tx[],ty[];
getstr(pos);
if (opt[pos] == 'E') return;
scanf(" %c %s %s",&value[pos],tx+,ty+);
if (tx[] != 'n') {
len = strlen(tx+);
for (i = ; i <= len; i++) l[pos] = (l[pos] << ) + (l[pos] << ) + tx[i] - '';
} else
l[pos] = INF;
if (ty[] != 'n') {
len = strlen(ty+);
for (i = ; i <= len; i++) r[pos] = (r[pos] << ) + (r[pos] << ) + ty[i] - '';
} else
r[pos] = INF;
getchar();
} inline bool error() {
int i,top=;
static int stk[MAXL+];
static bool used[];
memset(used,,sizeof(used));
for (i = ; i <= n; i++) {
if (opt[i] == 'F') {
if (used[value[i]-'a']) return true;
used[value[i]-'a'] = true;
stk[++top] = i;
} else {
if (!top) return true;
used[value[stk[top]]-'a'] = false;
--top;
}
}
return top != ;
} inline void solve() {
int i,top=,c,tmp,ans=;
static int stk[MAXL+];
memset(l,,sizeof(l));
memset(r,,sizeof(r));
read(n);
c = get();
for (i = ; i <= n; i++) getinfo(i);
if (error()) {
puts("ERR");
return;
}
for (i = ; i <= n; i++) {
if (opt[i] == 'F') {
tmp = stk[top];
if (l[i] > r[i]) tmp = -;
else if (r[i] - l[i] > && stk[top] != -) ++tmp;
stk[++top] = tmp;
ans = max(ans,tmp);
} else
--top;
}
if (ans == c) puts("Yes");
else puts("No");
} int main() { read(T);
while (T--) solve(); return ;
}

【NOIP2017 DAY1T2】 时间复杂度的更多相关文章

  1. 洛谷【P3952】NOIP2017提高组Day1T2时间复杂度

    我对模拟的理解:http://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P395 ...

  2. NOIP 2017 提高组 day1t2 时间复杂度

    P3952 时间复杂度 标签 NOIp提高组 2017 时空限制 1000ms / 128MB 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂 ...

  3. NOIP2017 d1t2 时间复杂度

    题目传送门:洛谷P3952 大模拟不解释 #include<iostream> #include<cstdio> #include<cmath> #include& ...

  4. NOIP2017 D1T2时间复杂度

    这道题在考试时看到感觉与第一题放反了位置(因为我还没有看到第一题是结论题) 对于每个语句进行栈的模拟,而如果有语法错误就特判. 对于每一条for语句我们将其与栈顶元素连边,复杂度是1的我们不用考虑,如 ...

  5. luogu 3952 时间复杂度

    noip2017 D1T2 时间复杂度 某zz选手考场上写了1.5h 考完之后发现自己写的是错的 但是结果A了??? 题目大意: 一种新的编程语言 A++ 给出一个程序只有循环语句 并给出这个程序的时 ...

  6. $NOIp$提高组做题记录

    对了我在这里必须讲一个非常重要的事情,就是前天也就是$2019.8.21$的傍晚,我决定重新做人了$!!$ 其实之前没怎么做$Noip$题,那就从现在开始叭

  7. 【比赛】NOIP2017 时间复杂度

    恶心的模拟题,考场上犯了一堆错误,多组数据清空没清完.数组开小...民间都是50分,结果CCF90.. 考完后随便改改就过了,还好只少了10分,如果真的是50,我估计会疯掉. 因为考场的时候没写好,所 ...

  8. [Luogu 3952] NOIP2017 时间复杂度

    [Luogu 3952] NOIP2017 时间复杂度 一年的时间说长不长,说短,也不短. 一年之内无数次觉得难得可怕的题目,原来也就模拟这么回事儿. #include <cstdio> ...

  9. P3952 NOIP2017 时间复杂度

    写了两三个小时,麻烦倒是不麻烦,要考虑清楚,想全了 只过了样例提交是不是傻,要自己造数据 数据不大可以用STL 建议自己刚一下,不看代码 #include <iostream> #incl ...

随机推荐

  1. MySQL与MSSQL的一些语法差异(持续更新中)

    分号不能少:分号不能少:分号不能少:重要的事情说3遍 Insert或者Update的数据包含反斜杠\的时候需要进行转义\\,例:insert into tablename(id,name) value ...

  2. android 环境变量配置,以及sdcard配置

    第一步,打开环境变量配置窗口.右击计算机,属性-高级系统设置-环境变量. 第二步,添加android系统环境变量.在系统变量下,选择path,点击编辑,然后在最前面输入android sdk开发工具, ...

  3. Raft算法详解

    一致性算法Raft详解 背景 熟悉或了解分布性系统的开发者都知道一致性算法的重要性,Paxos一致性算法从90年提出到现在已经有二十几年了,而Paxos流程太过于繁杂实现起来也比较复杂,可能也是以为过 ...

  4. ZJGSU-ACM OJ 心得

    一个我觉得蛮重要的问题,也是会经常碰到的问题 就是觉得自己对的代码提交到OJ发现输出超限 我是真的输出超限了吗? QAQ 其实,不然. 我把这类问题分为几类: (一):死循环:while(1) 比如以 ...

  5. Java教程收集

    极客学院Wiki离线教程-Java类: 官网:http://wiki.jikexueyuan.com/list/java/ 离线版本:链接:http://pan.baidu.com/s/1pKD2oH ...

  6. Java8期间及持续时间

    原文:http://www.yiibai.com/java8/java8_periodduration.html 使用Java8,两个专门类引入来处理时间差. Period - 处理有关基于时间的日期 ...

  7. mysql大数据量分页查询优化

    参考文章:https://www.dexcoder.com/selfly/article/293 Mysql的分页查询十分简单,但是当数据量大的时候一般的分页就吃不消了. 传统分页查询:SELECT ...

  8. 什么场景应该用 MongoDB ?

    摘要: 月初在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨 的技术话题,有近5000人关注了该话题讨论,这里就 MongoDB 的使用场景做个简单的总结,谈谈什么场景该用 Mo ...

  9. 转: 工欲善其事,必先利其器系列--Netbeans之远程开发

    转自: http://www.cnblogs.com/zuoca/archive/2012/07/09/Remote_Development_With_Netbeans_origin.html 工欲善 ...

  10. 走入asp.net mvc不归路:[4]说说Action有哪些常见成员

    一个控制器中,功能最终会落实到一个个Action中实现,最常见的是增删查改操作.这些Action是一个个的方法,一般返回值是ActionResult,并且是public 方法,可以带参数,可以添加元标 ...