NOIP2017 D1T2时间复杂度
这道题在考试时看到感觉与第一题放反了位置(因为我还没有看到第一题是结论题)
对于每个语句进行栈的模拟,而如果有语法错误就特判。
对于每一条for语句我们将其与栈顶元素连边,复杂度是1的我们不用考虑,如果复杂度是n我们就算他的贡献加一。
这样我们求最大复杂度就相当于求一颗子树的最大深度,当然如果这条语句不合法我们就将其整颗子树贡献算为0。
#include<bits/stdc++.h>
using namespace std;
int top;
struct node
{
int to,nex;
}e[];
int cnt,head[];
void add(int x,int y)
{
e[++cnt].to=y;e[cnt].nex=head[x];head[x]=cnt;
}
int inf=1e9;
struct poin
{
int l,r,id;
}a[];
stack<poin>qq;
int dfs(int x)
{
int pre=;
int ma=;
if(a[x].l!=inf&&a[x].r==inf)pre=;
if(a[x].l>a[x].r)return ;
for(int i=head[x];i;i=e[i].nex)
{
ma=max(ma,dfs(e[i].to));
}
return ma+pre;
}
char s[];
bool b[];
int q[];
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
cnt=;
memset(head,,sizeof(head));
memset(b,,sizeof(b));
memset(q,,sizeof(q));
scanf("%d",&n);top=;while(!qq.empty())qq.pop();
scanf("%s",s);int x=;bool flag=;
if(s[]>=''&&s[]<='')
for(int i=;s[i]>=''&&s[i]<='';++i)
x=x*+s[i]-'';
else{
for(int i=;s[i]>=''&&s[i]<='';++i)
x=x*+s[i]-'';
}
if(s[]!='n')x=;
for(int i=;i<=n;++i)
{
scanf("%s",&s);
if(s[]=='F')
{
scanf("%s",&s);int d=s[]-'a'+;
if(b[d]){
flag=;
}int u=,v=;int w=,z=;
b[d]=;q[++top]=d;
scanf("%s",&s);
if(s[]=='n')w=inf;
else{while(s[u]>=''&&s[u]<='')w=w*+s[u]-'',++u;}
scanf("%s",&s);
if(s[]=='n')z=inf;
else{while(s[v]>=''&&s[v]<='')z=z*+s[v]-'',++v;}
a[i].l=w;a[i].r=z;a[i].id=i; if(qq.empty())
add(,i);
else add(qq.top().id,i);
qq.push(a[i]); }
else
{
if(qq.empty())flag=;
else{b[q[top]]=;--top;qq.pop();}
}
}
if(!qq.empty())flag=;
if(flag){
puts("ERR");continue;
}
int ans=dfs();
if(ans!=x)puts("No");
else puts("Yes");
}
return ;
}
考试时我没有求max而是算的sum
还好noip数据水让我混了90分,谢天谢地。
NOIP2017 D1T2时间复杂度的更多相关文章
- NOIP2017 d1t2 时间复杂度
题目传送门:洛谷P3952 大模拟不解释 #include<iostream> #include<cstdio> #include<cmath> #include& ...
- [NOIP2017 TG D1T2]时间复杂度
题目大意:略 题解:模拟 卡点:1.数组忘清空 (考场代码风格独特...) C++ Code: #include<cstdio> #include<cstring> #incl ...
- luogu 3952 时间复杂度
noip2017 D1T2 时间复杂度 某zz选手考场上写了1.5h 考完之后发现自己写的是错的 但是结果A了??? 题目大意: 一种新的编程语言 A++ 给出一个程序只有循环语句 并给出这个程序的时 ...
- [SinGuLaRiTy] NOIP2017 提高组
[SinGuLaRiTy-1048] Copyright (c) SinGuLaRiTy 2018. All Rights Reserved. NOIP2017过了这么久,现在2018了才找到寒假这么 ...
- NOIP2017 题解
QAQ--由于没报上名并没能亲自去,自己切一切题聊以慰藉吧-- 可能等到省选的时候我就没有能力再不看题解自己切省选题了--辣鸡HZ毁我青春 D1T1 小凯的疑惑 地球人都会做,懒得写题解了-- D1T ...
- [NOIP补坑计划]NOIP2017 题解&做题心得
终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...
- SXOI2018 游记
noilinux@Capella:~$ cd /Memories/ noilinux@Capella:/Memories$ rm *SXOI* rm:是否删除有写保护的普通文件 "SXOI2 ...
- 【openjudge】【字符串+模拟】1777:文件结构“图”
[题目传送门:]戳 [描述:] 在计算机上看到文件系统的结构通常很有用.Microsoft Windows上面的"explorer"程序就是这样的一个例子.但是在有图形界面之前,没 ...
- NOIP 考前研究
NOIP 2017 试题研究 D1T1 小凯的疑惑 (45 min) 看到题面,大概是推数学公式. 先打暴力表,观察 \(a,b\) 与 \(n\) 的关系.猜想 \(a×b−a−b\). 引理:对于 ...
随机推荐
- 吐泡泡(2018年全国多校算法寒假训练营练习比赛(第二场)+栈模拟)+Plug-in(codeforces81A+栈模拟)
吐泡泡题目链接:https://www.nowcoder.com/acm/contest/74/A 题目: 思路: 这种题目当初卡了我很久,今天早训时遇到一个一样得题,一眼就想到用栈模拟,就又回来把这 ...
- Tornado/Python 学习笔记(二)
部分ssrpc.py代码分析 -- 服务端: 1 #!/usr/bin/python3 2 3 from xmlrpc.client import Fault, dumps, loads 4 impo ...
- 一. Jmeter--使用代理录制脚本
Jmeter脚本是以.JMX格式为主 1. Jmeter也是支持录制的,支持第三方录制方式和代理录制方式. (1).第三方录制主要是通过badboy来录制,录制后另存为jmx格式即可. (2).Jme ...
- 《STL源码剖析》读书笔记
转载:https://www.cnblogs.com/xiaoyi115/p/3721922.html 直接逼入正题. Standard Template Library简称STL.STL可分为容器( ...
- dev_alloc_skb(len+16) skb_reserve(skb,2) skb_put(skb,len)
/** * dev_alloc_skb - allocate an skbuff for receiving * @length: length to allocate * * ...
- linux中的计算【转】
shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵 1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1 ...
- JVM的分区+查看GC对象是否存活+3种GC算法+7种垃圾收集器+如何减少GC次数
一.JVM的分区: 1.程序计数器(私有) 程序计数器是一块较小的内存分区,你可以把它看做当前线程所执行的字节码的指示器. 在虚拟机的概念模型里,字节码解释器工作时,就是通过改变计数器的值来选择下 ...
- ZOJ 1610 Count the Colors(区间染色)
题目大意:多组数据,每组给一个n(1=<n<=8000),下面有n行,每行有l,r,color(1=<color<=8000),表示将l~r颜色变为color,最后求各种颜色( ...
- js中的cookie使用和vue-cookie的使用
在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和客户端交互信息的格式.生存期.使用范围.安全性. 在JavaScrip ...
- 使用 Python 的 sounddevice 包录制系统声音
博客中的文章均为meelo原创,请务必以链接形式注明本文地址 sounddevice是一个与Numpy兼容的录音以及播放声音的包. 安装sounddevice包 直接通过pip就能安装. pip in ...