[题解]P3952 [NOIP2017 提高组] 时间复杂度
我们把循环的嵌套关系看做树形结构,梳理一下\(3\)种情况:
直接跳过当前子树:
- \(x,y\in\mathbb{N}\),且\(x>y\)。
- \(x=\tt{"n"},y\in\mathbb{N}\)。
不跳过,并在处理完所有子节点后追加\(n\)的时间复杂度:
- \(x\in\mathbb{N},y=\tt{"n"}\)。
不跳过,并不追加复杂度:
- 除上面\(2\)种以外的情况。
直接输入的同时处理即可,跳过子树用的方法是记录一个\(skip\),当需要跳过某个子树时,就把当前调用深度\(dep\)赋给\(skip\),在\(dep<skip\)之前,只进行输入和根据函数类型更改\(dep\)。
注意出现错误后仍需完成剩下的输入。
点击查看代码
#include<bits/stdc++.h>
#define L 110
#define int long long
using namespace std;
int t,dep,maxx[L],add[L],n,top;
bitset<26> vis;
char s2,st[L];
string com,s1,s3,s4;
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(nullptr);
cin>>t;
while(t--){
bool err=0;
int skip=LLONG_MAX;
maxx[0]=dep=top=0;
vis=0;
cin>>n>>com;
int i=1;
for(;i<=n;i++){
cin>>s1;
if(s1=="E"){
if(!dep){err=1;break;}
if((--dep)>=skip) continue;
if(skip!=LLONG_MAX){
skip=LLONG_MAX;
continue;
}
maxx[dep]=max(maxx[dep],maxx[dep+1]+add[dep+1]);
vis[st[top--]-'a']=0;
}else{
cin>>s2>>s3>>s4;
if(vis[s2-'a']){err=1;break;}
if((++dep)>=skip) continue;//如果dep>=skip则不执行
if((s3=="n"&&s4!="n")||(s3!="n"&&s4!="n"&&stoi(s3)>stoi(s4))){
skip=dep;
continue;
}
vis[s2-'a']=1,st[++top]=s2;
add[dep]=(s3!="n"&&s4=="n"),maxx[dep]=0;
}
}
if(dep) err=1;
if(err){
for(i++;i<=n;i++){
cin>>s1;
if(s1!="E") cin>>s2>>s3>>s4;
}
cout<<"ERR\n";
}else{
string ans=((!maxx[0])?"O(1)":"O(n^"+to_string(maxx[0])+")");
cout<<(ans==com?"Yes\n":"No\n");
}
}
return 0;
}
[题解]P3952 [NOIP2017 提高组] 时间复杂度的更多相关文章
- 【题解】NOIP2017 提高组 简要题解
[题解]NOIP2017 提高组 简要题解 小凯的疑惑(数论) 不讲 时间复杂度 大力模拟 奶酪 并查集模板题 宝藏 最优解一定存在一种构造方法是按照深度一步步生成所有的联通性. 枚举一个根,随后设\ ...
- [NOIp2017提高组]列队
[NOIp2017提高组]列队 题目大意 一个\(n\times m(n,m\le3\times10^5)\)的方阵,每个格子里的人都有一个编号.初始时第\(i\)行第\(j\)列的编号为\((i-1 ...
- NOIP2017提高组 模拟赛15(总结)
NOIP2017提高组 模拟赛15(总结) 第一题 讨厌整除的小明 [题目描述] 小明作为一个数学迷,总会出于数字的一些性质喜欢上某个数字,然而当他喜欢数字k的时候,却十分讨厌那些能够整除k而比k小的 ...
- NOIP2017提高组模拟赛 10 (总结)
NOIP2017提高组模拟赛 10 (总结) 第一题 机密信息 FJ有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的 ...
- NOIP2017提高组模拟赛 9 (总结)
NOIP2017提高组模拟赛 9 (总结) 第一题 星星 天空中有N(1≤N≤400)颗星,每颗星有一个唯一的坐标(x,y),(1≤x,y ≤N).请计算可以覆盖至少K(1≤K≤N)颗星的矩形的最小面 ...
- 【题解】NOIP2016提高组 复赛
[题解]NOIP2016提高组 复赛 传送门: 玩具谜题 \(\text{[P1563]}\) 天天爱跑步 \(\text{[P1600]}\) 换教室 \(\text{[P1850]}\) 组合数问 ...
- 【题解】NOIP2015提高组 复赛
[题解]NOIP2015提高组 复赛 传送门: 神奇的幻方 \([P2615]\) 信息传递 \([P2661]\) 斗地主 \([P2668]\) 跳石头 \([P2678]\) 子串 \([P26 ...
- JZOJ 5196. 【NOIP2017提高组模拟7.3】B
5196. [NOIP2017提高组模拟7.3]B Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- JZOJ 5197. 【NOIP2017提高组模拟7.3】C
5197. [NOIP2017提高组模拟7.3]C Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- JZOJ 5195. 【NOIP2017提高组模拟7.3】A
5195. [NOIP2017提高组模拟7.3]A Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
随机推荐
- React-native之Flexbox
本文总结: 我们学到了 React Native 的 Flexbox 布局,它让写样式变得更方便啦! Flexbox 就像一个有弹性的盒子,有主轴和交叉轴(行或列). 在 RN 里写样式要用 Styl ...
- 题解:P6880 [JOI 2020 Final] オリンピックバス
一个比较重要的性质:反转的边要在最短路上才会有贡献. 我们可以先跑一遍最短路,记录下整颗最短路树,然后暴力的对每一条边进行判断,反转. 我们建正反图各两个,分别以 \(1\),\(n\) 为起点.\( ...
- servlet 的生命周期
1 //servlet 的生命周期 2 @WebServlet(value = "/life",name = "LifeServlet",loadOnStart ...
- java里面的高精度运算
1 package com.lv.study.am.first; 2 3 import java.math.BigDecimal; 4 5 public class TestBigDecimal { ...
- 现在的AI工具已经能够创作音乐了?
本文由 ChatMoney团队出品 随着科技的不断进步,音乐是人类文明的一部分,它在社会.文化.艺术和娱乐领域发挥着重要作用.随着AI技术的发展,AI技术的应用正在以惊人的速度改变音乐创作.演奏.传播 ...
- 【实战】基于 Tauri 和 Rust 实现基于无头浏览器的高可用网页抓取
一.背景 在 Saga Reader 的早期版本中,存在对网页内容抓取成功率不高的问题.主要原因是先前采用的方案为后台进程通过 reqwest 直接发起 GET 请求获取网站 HTML 的方案,虽然仿 ...
- javacv添加字幕 剧中显示
介绍 javacv目前不能像ffmpeg那样 直接加载字体文件到视频 参考这里 所以实现流程为:提取帧 -> 转图片 -> 编辑图片增加文字 -> 转回帧 -> 输出视频 上代 ...
- AWTK 嵌入式Linux平台实现多点触控缩放旋转以及触点丢点问题解决
前言 最近涉及海图的功能交互,多点触摸又开始找麻烦. 在PC/Web平台awtk是通过底层的sdl2库来实现多点触摸,但是在嵌入式Linux平台,可能是考虑到性能原因,awtk并没有采用sdl库来做事 ...
- 项目捷报 | 冠捷科技泰国工厂THA MES项目成功验收!TPV国际化布局再添里程碑!
近日,盘古信息与冠捷科技(TPV)携手打造的泰国工厂MES项目(THA MES项目)圆满通过验收.这不仅标志着TPV在全球数字化制造布局中取得重大突破,更成为盘古信息赋能其"两国五城七期&q ...
- leetcode 240 搜索二维矩阵
简介 一时半会儿没啥思路. 官方那种 移动指针的思路挺不错的. code class Solution { public boolean searchMatrix(int[][] matrix, in ...