【NOIP2017 DAY1T2】 时间复杂度
【题目链接】
【算法】
其实这就是一道模拟题啦!
在判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】 时间复杂度的更多相关文章
- 洛谷【P3952】NOIP2017提高组Day1T2时间复杂度
我对模拟的理解:http://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P395 ...
- NOIP 2017 提高组 day1t2 时间复杂度
P3952 时间复杂度 标签 NOIp提高组 2017 时空限制 1000ms / 128MB 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂 ...
- NOIP2017 d1t2 时间复杂度
题目传送门:洛谷P3952 大模拟不解释 #include<iostream> #include<cstdio> #include<cmath> #include& ...
- NOIP2017 D1T2时间复杂度
这道题在考试时看到感觉与第一题放反了位置(因为我还没有看到第一题是结论题) 对于每个语句进行栈的模拟,而如果有语法错误就特判. 对于每一条for语句我们将其与栈顶元素连边,复杂度是1的我们不用考虑,如 ...
- luogu 3952 时间复杂度
noip2017 D1T2 时间复杂度 某zz选手考场上写了1.5h 考完之后发现自己写的是错的 但是结果A了??? 题目大意: 一种新的编程语言 A++ 给出一个程序只有循环语句 并给出这个程序的时 ...
- $NOIp$提高组做题记录
对了我在这里必须讲一个非常重要的事情,就是前天也就是$2019.8.21$的傍晚,我决定重新做人了$!!$ 其实之前没怎么做$Noip$题,那就从现在开始叭
- 【比赛】NOIP2017 时间复杂度
恶心的模拟题,考场上犯了一堆错误,多组数据清空没清完.数组开小...民间都是50分,结果CCF90.. 考完后随便改改就过了,还好只少了10分,如果真的是50,我估计会疯掉. 因为考场的时候没写好,所 ...
- [Luogu 3952] NOIP2017 时间复杂度
[Luogu 3952] NOIP2017 时间复杂度 一年的时间说长不长,说短,也不短. 一年之内无数次觉得难得可怕的题目,原来也就模拟这么回事儿. #include <cstdio> ...
- P3952 NOIP2017 时间复杂度
写了两三个小时,麻烦倒是不麻烦,要考虑清楚,想全了 只过了样例提交是不是傻,要自己造数据 数据不大可以用STL 建议自己刚一下,不看代码 #include <iostream> #incl ...
随机推荐
- Oracle 12c安装报错Installation failed to access the temporary location(无法访问临时位置)
报错如图 1.先检查当前windows账户用户名是否为全英文,没有就新建一个,大多数用户败在这一步,而官方也没有解释 如何新建:开始-->控制面板-->用户账户和家庭安全-->用户账 ...
- 一起来学Spring Cloud | 第五章:熔断器 ( Hystrix)
在微服务项目中,一个系统可以分割成很多个不同的服务模块,不同模块之间我们通常需要进行相互调用.springcloud中可以使用RestTemplate+Ribbon和Feign来调用(工作中基本都是使 ...
- LightOJ1234 Harmonic Number 调和级数求和
[题目] [预备知识] ,其中r是欧拉常数,const double r= 0.57721566490153286060651209; 这个等式在n很大 的时候 比较精确. [解法]可以在 n较小的时 ...
- php 笔记 汇总 学习
php命令行:通过命令行进入到当前要被执行的php文件路径,然后输入php环境可执行路径(后面包含php.exe),然后输入要被执行的php文件,比如runData.php即可. php框架:yaf. ...
- 批量修改WORD表格属性
有时候需要对word中很多表格的属性进行修改,而word无法批量修改属性,所有这里记录一个宏 Sub TableFormatter() Dim oTbl As Table, i As Integer ...
- android 子菜单
<!-- 定义基础布局LinearLayout --> <LinearLayout xmlns:android="http://schemas.android.com/ap ...
- BIM
BIM进入中国已经有十来个年头,随着对BIM概念的深入了解.当前国内BIM应用逐渐由三维模型的可视化应用升级为基于BIM模型的信息进行项目精细化动态管理. 传统粗放的项目管理方法是工程项目难以进行精细 ...
- Mac--安装kubernetes并运行echoserver
安装minikube curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.15.0/minikube-darwi ...
- C++中的sort函数
(一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于 ...
- 转:Twemproxy——针对MemCached与Redis的代理
转自: http://www.infoq.com/cn/news/2012/12/twemproxy Twemproxy是一个代理服务器,可以通过它减少Memcached或Redis服务器所打开的连接 ...