这道题在考试时看到感觉与第一题放反了位置(因为我还没有看到第一题是结论题)

对于每个语句进行栈的模拟,而如果有语法错误就特判。

对于每一条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时间复杂度的更多相关文章

  1. NOIP2017 d1t2 时间复杂度

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

  2. [NOIP2017 TG D1T2]时间复杂度

    题目大意:略 题解:模拟 卡点:1.数组忘清空 (考场代码风格独特...) C++ Code: #include<cstdio> #include<cstring> #incl ...

  3. luogu 3952 时间复杂度

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

  4. [SinGuLaRiTy] NOIP2017 提高组

    [SinGuLaRiTy-1048] Copyright (c) SinGuLaRiTy 2018. All Rights Reserved. NOIP2017过了这么久,现在2018了才找到寒假这么 ...

  5. NOIP2017 题解

    QAQ--由于没报上名并没能亲自去,自己切一切题聊以慰藉吧-- 可能等到省选的时候我就没有能力再不看题解自己切省选题了--辣鸡HZ毁我青春 D1T1 小凯的疑惑 地球人都会做,懒得写题解了-- D1T ...

  6. [NOIP补坑计划]NOIP2017 题解&做题心得

    终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...

  7. SXOI2018 游记

    noilinux@Capella:~$ cd /Memories/ noilinux@Capella:/Memories$ rm *SXOI* rm:是否删除有写保护的普通文件 "SXOI2 ...

  8. 【openjudge】【字符串+模拟】1777:文件结构“图”

    [题目传送门:]戳 [描述:] 在计算机上看到文件系统的结构通常很有用.Microsoft Windows上面的"explorer"程序就是这样的一个例子.但是在有图形界面之前,没 ...

  9. NOIP 考前研究

    NOIP 2017 试题研究 D1T1 小凯的疑惑 (45 min) 看到题面,大概是推数学公式. 先打暴力表,观察 \(a,b\) 与 \(n\) 的关系.猜想 \(a×b−a−b\). 引理:对于 ...

随机推荐

  1. UIDynamicBehavior的行为类翻译

    CHENYILONG Blog UIDynamicBehavior的行为类翻译 © chenyilong. Powered by Postach.io Blog

  2. 24、CSS定位

    CSS定位方法 driver.find_element_by_css_selector() 1.CSS定位常用策略(方式) 1.id选择器 说明:根据元素id属性来选择 格式:#id 如:#userA ...

  3. 48、面向对象中super的作用?

    什么是super? super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序( ...

  4. python基本数据类型list,tuple,set,dict用法以及遍历方法

    1.list类型 类似于java的list类型,数据集合,可以追加元素与删除元素. 遍历list可以用下标进行遍历,也可以用迭代器遍历list集合 建立list的时候用[]括号 import sys ...

  5. (1)剑指Offer之斐波那契数列问题和跳台阶问题

    一 斐波那契数列 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 问题分析: 可以肯定的是这一题通过递归的方式是肯定能做出来,但是这样会有 ...

  6. C语言回调函数总结

    /* Main program ---calls--> Library function ---calls--> Callback funtion */ #include <stdi ...

  7. selenium滚动到顶部与底部

    #coding=utf-8 from selenium import webdriver #滚动到浏览器顶部 js_top = "var q=document.documentElement ...

  8. python之smtplib库学习

    # -*- coding:utf-8 -*- import smtplibfrom email.mime.text import MIMETextfrom email import encodersf ...

  9. Android第一篇

    1. 网上下载最新版SDK,里面就有一个集成ADT的Eclipse,可以直接用. 2. 最新版SDK会在layout文件夹下有fregment.xml和activity.xml两个布局文件,如果像我这 ...

  10. JS 数据类型转换以其他

    JavaScript 是一种弱类型的语言,也就是没有类型限制,变量可以随时被赋予任意值. 同时,在程序运行过程中,类型会被自动确认的.因此,这就是涉及到数据的类型转换.在 JS 的世界中,数据类型转换 ...