[Luogu 3952] NOIP2017 时间复杂度
[Luogu 3952] NOIP2017 时间复杂度
一年的时间说长不长,说短,也不短。
一年之内无数次觉得难得可怕的题目,原来也就模拟这么回事儿。
#include <cstdio>
#include <iostream>
#include <set>
#include <stack>
#include <string>
int T;
struct Layer
{
std::string name;
int state;
Layer(std::string name, int state): name(name), state(state){}
};
int Solve(std::string s)
{
if(s == "O(1)")
return 0;
int ans = 0;
for(int i = 4; s[i] != ')'; ++i)
ans = ans * 10 + s[i] - '0';
return ans;
}
int Number(std::string s)
{
if(s[0] == 'n')
return 0;
int ans = 0;
for(int i = 0; s[i]; ++i)
ans = ans * 10 + s[i] - '0';
return ans;
}
int main(void)
{
scanf("%d", &T);
while(T--)
{
bool right = true;
int n, ans, cur = 0, fact = 0;
std::set<std::string> Name;
std::stack<Layer> S;
std::string a[5];
scanf("%d", &n);
std::cin >> a[0];
ans = Solve(a[0]);
for(int i = 1; i <= n; ++i)
{
std::cin >> a[1];
if(a[1] == "F")
{
for(int i = 2; i <= 4; ++i)
std::cin >> a[i];
if(right && !Name.count(a[2]))
{
int state, x = Number(a[3]), y = Number(a[4]);
if((!S.empty() && S.top().state == -1) || (!x && y) || (x > y && y))
state = -1;
else if(x && !y)
{
state = 1;
++cur;
}
else
state = 0;
Name.insert(a[2]);
S.push(Layer(a[2], state));
}
else
right = false;
}
else if(right)
{
if(!S.empty())
{
Layer t = S.top();
Name.erase(t.name);
S.pop();
fact = std::max(fact, cur);
if(t.state == 1)
--cur;
}
else
right = false;
}
}
if(!S.empty())
right = false;
if(!right)
puts("ERR");
else
puts(ans == fact ? "Yes" : "No");
}
return 0;
}
谢谢阅读。
[Luogu 3952] NOIP2017 时间复杂度的更多相关文章
- [luogu P3953] [noip2017 d1t3] 逛公园
[luogu P3953] [noip2017 d1t3] 逛公园 题目描述 策策同学特别喜欢逛公园.公园可以看成一张$N$个点$M$条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,$N ...
- [luogu P3960] [noip2017 d2t3] 队列
[luogu P3960] [noip2017 d2t3] 队列 题目描述 Sylvia 是一个热爱学习的女♂孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Syl ...
- 【比赛】NOIP2017 时间复杂度
恶心的模拟题,考场上犯了一堆错误,多组数据清空没清完.数组开小...民间都是50分,结果CCF90.. 考完后随便改改就过了,还好只少了10分,如果真的是50,我估计会疯掉. 因为考场的时候没写好,所 ...
- luogu 3952 时间复杂度
noip2017 D1T2 时间复杂度 某zz选手考场上写了1.5h 考完之后发现自己写的是错的 但是结果A了??? 题目大意: 一种新的编程语言 A++ 给出一个程序只有循环语句 并给出这个程序的时 ...
- luogu 3952 时间复杂度(模拟)
时间复杂度 这道题从两个月前开始做,一直没做出来,最后今晚决心一定要做出来.于是开始认真的在打草纸上写思路,最后在AC的那一刻,差点哭了出来!! 题目大意 这个自己看吧,noip2017的D1T2 s ...
- Luogu 3959 [NOIP2017] 宝藏
NOIP2017最后一道题 挺难想的状压dp. 受到深度的条件限制,所以一般的状态设计带有后效性,这时候考虑把深度作为一维,这样子可以保证所有状态不重复计算一遍. 神仙预处理:先处理出一个点连到一个集 ...
- P3952 NOIP2017 时间复杂度
写了两三个小时,麻烦倒是不麻烦,要考虑清楚,想全了 只过了样例提交是不是傻,要自己造数据 数据不大可以用STL 建议自己刚一下,不看代码 #include <iostream> #incl ...
- Luogu 3953[NOIP2017] 逛公园 堆优化dijkstra + 记忆化搜索
题解 首先肯定是要求出单源最短路的,我用了堆优化dijikstra ,复杂度 mlogm,值得拥有!(只不过我在定义优先队列时把greater 打成了 less调了好久 然后我们就求出了$i$到源点的 ...
- luoguP3952 [NOIP2017]时间复杂度 模拟
原本只是想看下多久能码完时间复杂度 然后在30min内就码完了,然后一A了???? 首先,这题完全可以离线做 我们先把所有的操作读完,判断合不合法之后,再去判断和标准答案的关系 具体而言 把所有的操作 ...
随机推荐
- 将url的参数解析为Json数据
代码如下: <!DOCTYPE> <html lang="en"> <head> </head> <body> < ...
- profibus 的DPV0 和DPV1
DP的功能经过扩展,一共有3个版本:DP-V0,DP-V1和DP-V2.有的用户手册将DP-V1简写为DPV1. 1.基本功能(DP-V0) (1)总线访问方法:各主站之间为令牌传送,主站与从站间为主 ...
- C++判断char*的指向
char *a = "Peter"; char b[] = "Peter"; ]; strcpy_s(c, , "Peter"); 这里a指 ...
- contos7忘记root密码怎么办
首先在这个界面按"e"键 然后呢就会进入到如下图所示的界面,在LANG=zh_CN.UTF8的后面加上 init=/bin/sh, 再按 [ Ctrl + X ] 进入'单用户模式 ...
- Beta版本发布140字评论
1.飞天小女警组: 礼物挑选工具:系统界面十分新颖,相比于前阶段,增加了账号登陆的功能,并且还根据不同的价位区间添加了礼物的图片,并根据礼物的受欢迎程度添加了top10的功能,并且增加了关于本网站的问 ...
- 用vue实现省市县三级联动
我真的没想到这个会困扰到我.最开始以为,不就是直接找个简单的插件就实现了吗,jquery插件找了几个,都没有达到目的. 需求是这样的: 点击input框,弹出一个popup,然后可以滚动选择省,市,县 ...
- Java并发知识点总结
前言:Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.同时,如果想要提升自己的技术,Java并发知识必不可少,这里简单整理了一些相关内容,希望可以起到抛砖引玉的作用 ...
- 重新认识javascript的settimeout和异步
1.简单的settimeout setTimeout(function () { while (true) { } }, 1000); setTimeout(function () { alert(' ...
- LDA-Latent Dirichlet Allocation 学习笔记
以下内容主要基于<Latent Dirichlet Allocation>,JMLR-2003一文,另加入了一些自己的理解,刚开始了解,有不对的还请各位指正. LDA-Latent Dir ...
- P4254 [JSOI2008]Blue Mary开公司
题面 这道题的意思就是给出若干个一次函数,当\(x=x_0\)时,最大的\(y\)为多少 这种题可以用李超线段树来处理 什么是李超线段树呢? 李超线段树存储的是在区间上方暴露最多的直线标号,为了便于描 ...