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\). 引理:对于 ...
随机推荐
- LintCode 402: Continuous Subarray Sum
LintCode 402: Continuous Subarray Sum 题目描述 给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的下标 ...
- DOM基础操作
本文地址:http://www.cnblogs.com/veinyin/p/7606972.html 1 访问 HTML 元素 常用方法 document.getElementById(" ...
- 【BZOJ 1001】[BJOI2006]狼抓兔子(最大流)
题目链接 最大流裸题,没什么好说吧,恰好点数多,考验网络流的效率,正好练\(Dinic\). #include <cstdio> #include <queue> #inclu ...
- vue-loader 调用了cssLoaders方法配置了css加载器属性。
module: { loaders: [ // 这里也是相应的配置,test就是匹配文件,loader是加载器, { test: /\.vue$/, loader: 'vue' }, { test: ...
- javac -cp java -cp
///////////////////////////////////////////////////////////////////////////////////// 编译java文件的命令都知道 ...
- MySQL之——如何添加新数据库到MySQL主从复制列表 【转】
转自 转载请注明出处:http://blog.csdn.net/l1028386804/article/details/54653691 MySQL主从复制一般情况下我们会设置需要同步的数据库,使用参 ...
- Linux中切换用户变成-bash4.1-$的解决方法
原因是root在/root下面的几个配置文件丢失,将/etc/skel/目录下的三个文件拷贝到用户家目录即可 cp /etc/skel/.bashrc /root/ cp /etc/skel/.bas ...
- eclipse maven jetty启动修改默认端口
如何修改eclipse中的maven项目jetty服务器的默认端口那?网上有很多办法,但配置上都没有效果,最后找到了简单.简洁的解决办法,就是在eclipse的jetty启动命令后面加上以下内容 je ...
- PHP--- JSON和数组的转换
一.json_encode() <?php $arr =array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_ ...
- 使用FormData数据做图片上传: new FormData() canvas实现图片压缩
使用FormData数据做图片上传: new FormData() canvas实现图片压缩 ps: 千万要使用append不要用set 苹果ios有兼容问题导致数据获取不到,需要后台 ...