[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了???? 首先,这题完全可以离线做 我们先把所有的操作读完,判断合不合法之后,再去判断和标准答案的关系 具体而言 把所有的操作 ...
随机推荐
- redis简介及增删改查
redis 是一个文档(nosql)数据库,工作与内存,主要用做高速缓存 缓存经常会查到的数据 存入的值默认是字符串 使用步骤: 1 从redis.io下载 2 点击redis-server.exe启 ...
- 搭建zabbix详细步骤
关闭selinux和防火墙 selinux关闭: 1 命令查看出selinux的状态sestatus -v2 临时关闭 selinuxsetenforce 03 永久关闭selinuxvi /etc/ ...
- 停止ipv6
在Centos5.5默认的状态下,ipv6是被启用的.因为我们不使用ipv6,所以,可以停止ipv6,以最大限度地保证安全和快速.首先确认一下ipv6是不是处于被启动的状态.[root@sample ...
- vm的三种网络模式
Vm网卡的模式:网络地址转换模式(nat),仅主机(host-only),桥接模式(Brideged) VMware 的几个虚拟设备: ■ VMnet0:这是 VMware 用于虚拟桥接网络下的虚拟交 ...
- Mscomm控件安装问题 License information for TMSComm not found.
操作步骤: 1.打开delphi,菜单选择compoents->import Activex control,然后选择那个mscomm32.ocx安装即可. 2.注册MScomm控件 开始- ...
- 服务 在初始化安装时发生异常:System.IO.FileNotFoundException: 未能加载文件或******
这个问题是在用installutil.exe安装服务时候碰到的 解决方法就是把installutil.exe文件直接复制到要安装的目录下 installutil.exe的所在位置 windows/mi ...
- [转帖]go 命令
golang笔记——命令 https://www.cnblogs.com/tianyajuanke/p/5196436.html 1.GO命令一览 GO提供了很多命令,包括打包.格式化代码.文档生成 ...
- [华商韬略] 拉里·埃里森(Larry Elison) 的传奇人生
拉里·埃里森(Larry Elison) 的传奇人生 开战机.玩游艇.盖皇宫,挑战比尔·盖茨,干掉50多家硅谷豪强……全世界比拉里·埃里森更有钱的只有5个,像他这样的硅谷“坏孩子”却是唯一. 19 ...
- 数组 javaScript权威指南笔记
创建数组 var a=[1,2,3,4] var arr=new Array() var arr=new Array(10);//创建长度为10的数组 var arr=new Array(1,2, ...
- 利用stream对map集合进行过滤
最近公司在大张旗鼓的进行代码审核,从中也发现自己写代码的不好习惯.一次无意的点到了公司封装的对map集合过滤的方法,发现了stream.于是研究了一下.并对原有的代码再次结合Optional进行重构下 ...