洛谷P3952 时间复杂度(模拟)
题意
Sol
咕了一年的题解。。就是个模拟吧
考场上写的递归也是醉了。。。
感觉一年自己进步了不少啊。。面向数据编程的能力提高了不少
#include<bits/stdc++.h>
#define fi first
#define se second
#define MP make_pair
using namespace std;
const int MAXN = 101;
int T, top = 0, now, mx, flag;
pair<char, int> st[MAXN];// first 字符 second 是否算作复杂度 1 算 0不算
void init() {
top = 0;//已经用过哪些字符
now = 0;//当前进入了几层循环
mx = 0;//最大循环层数
flag = 0;
}
int get(char *s) {
int l = strlen(s + 1), x = 0;
for(int i = 1; i <= l; i++) if(s[i] >= '0' && s[i] <= '9') x = x * 10 + s[i] - '0';
return x;
}
char getopt() {
char c = ' ';
while(c != 'E' && c != 'F') c = getchar();
return c == 'F' ? 1 : 0;// 1 enter 0 end
}
int readround() {//n = -1
char c = ' '; int x = 0;
while(c != 'n' && (c < '0' || c > '9')) c = getchar();
if(c == 'n') return -1;
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x;
}
int readbuf() {// 1 n 0常数 -1重名
char c = getchar();
while(c < 'a' || c > 'z') c = getchar();
int bg = readround(), ed = readround();
for(int i = 1; i <= top; i++) if(st[i].fi == c) return -1;
if((bg != -1 && ed != -1 && bg > ed) || (bg == -1 && ed != -1)) {flag = 1, st[++top] = MP(' ', -1); return 0;}//不进入循环
if(bg != -1 && ed == -1) {//非常数循环
if(flag == 0) now++, mx = max(now, mx), st[++top] = MP(c, 1);
else st[++top] = MP(c, 0);
} else {
st[++top] = MP(c, 0);
}
return 0;
}
int solve() {// 1 Yes 0 No -1 ERR
int L, w = 0, GG = 0; char s[233];
scanf("%d %s", &L, s + 1);
if(s[3] == 'n') w = get(s + 1);
for(int i = 1; i <= L; i++) {
int opt = getopt();
if(opt == 0) {
if(top == 0) GG = -1;
else {
if(st[top].se == -1) flag = 0;
if(st[top--].se == 1) now--;
}
} else {
int tmp = readbuf();
if(tmp == -1) GG = -1;
}
}
if(GG == -1) return -1;
if(top) return -1;
else return mx == w;
}
int main() {
cin >> T;
while(T--) {
init();
int tmp = solve();
if(tmp == 1) puts("Yes");
else if(tmp == 0) puts("No");
else puts("ERR");
}
return 0;
}
/*
1
2 O(n^1)
F a n n
E
*/
洛谷P3952 时间复杂度(模拟)的更多相关文章
- 洛谷 - P3952 - 时间复杂度 - 模拟
https://www.luogu.org/problemnew/show/P3952 这个模拟,注意每次进入循环的时候把新状态全部入栈,退出循环的时候就退栈. 第一次就错在发现ERR退出太及时,把剩 ...
- 洛谷 P3952 时间复杂度 解题报告
P3952 时间复杂度 题目描述 小明正在学习一种新的编程语言A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会 ...
- 洛谷P3952 时间复杂度【字符串】【模拟】
题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序 ...
- 计蒜客 时间复杂度 (模拟) & 洛谷 P3952 时间复杂度
链接 : Here! 思路 : 这是一道大模拟, 区分好情况就没问题了 循环构成部分 : $F , x , i , j$ 和 $E$ , 需要注意的是 $i , j$, - 分析 $i, j$ 的情况 ...
- 2018.11.02 洛谷P3952 时间复杂度(模拟)
传送门 惊叹考场dubuffdubuffdubuff. 这题还没有梭哈难啊233. 直接按照题意模拟就行了. 代码: #include<bits/stdc++.h> using names ...
- 洛谷 P3952 时间复杂度【模拟】
把No写成NO,WA了一发-- 现在看这题也不难-- 用一个栈,记一下前面F的字母,是否合法,合法的有多长,每次入栈弹栈即可 #include<iostream> #include< ...
- 洛谷P3952 时间复杂度
大毒瘤...... 时隔快半年我终于花了两个小时堪堪A掉这一题...果然我还没有准备好. 想法:用DFS模拟递归. 时间复杂度的处理:每层循环取max,然后相加. 最大难点:各种繁杂而令人发指的特判. ...
- 洛谷 P3952时间复杂度 (本地AC测评RE的伪题解)
[题目描述] 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写 ...
- 【题解】洛谷P3952 [NOIP2017TG] 时间复杂度(模拟)
题目来源:洛谷P3952 思路 纯模拟没啥可说的了 果然好复杂 参考了你谷一个40行代码 代码 #include<iostream> #include<cstdio> #inc ...
随机推荐
- Linux rsync 企业级应用
简介 rsync 是 Linux 下的数据同步工具, 其支持本地同步和远程同步, 远程同步分为 daemon 和 ssh 同步方式 rsync 可以代替 cp, scp 等命令, 且具有更高的可 ...
- 启动MacOS 本地服务
MacOS 自带Apatch服务器, 在浏览器输入 http://127.0.0.1/ 出现it works,代表访问成功 一. 启动 启动 sudo apachectl start 重启 sudo ...
- git的使用(入门)
针对linux系统,全部采用shell命令的方式实现 一.查看相关信息 which -a git 查看git的安装位置git version 查看git的版本git help 学习相关的命令 二.gi ...
- [Alpha]Scrum Meeting#1
github 本次会议项目由PM召开,时间为4月1日晚上10点30分 时长10分钟 任务表格 人员 昨日工作 下一步工作 木鬼 - 撰写初版技术规格说明书(issue#1) - 撰写初版功能规格说明书 ...
- 达人篇:3.1.3)FAI 首件检验
本章目的:了解FAI. 1)定义: FAI: First Article Inspection Report . 汉语译作:首件全尺寸检验报告. 2)目的 制作FAI报告是为了检查成型后的产品尺寸是否 ...
- Go语言字符串
Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 . 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称.可使用 []byte() ...
- x86/x64/AnyCPU之间的区别
原文链接 http://blog.csdn.net/lordwish/article/details/52312015 x86操作系统 目标平台 程序类型 运行结果 x86 应用程序exe 在32位C ...
- js 面向对象 定时器 046
获取DOM对象补充 document.getElementsByTagName('div'); //获取的多个DOM对象 这种对象叫伪数组 如果想遍历此对象 通过for(var i=0; i < ...
- PIE SDK 距离分类和最大似然分类
1.算法功能简介 监督分类,也叫训练场地法.训练分类法,是遥感图像分类的一种,用被确认类别的样本像元去识别其他未知类别像元的过程.监督分类算法有平行算法.平行六面体法.最小距离法.最大似然法.马 ...
- vue移动端更改手机物理按键返回问题
又是一天见面的日子,春季盎然~ 已经无法在继续抒情下去了,写作水平骤降!! 今天记录下应用cordva+vue生成的apk 在手机物理返回时遇到的问题: 前提说~~应用vue,我们可以自定义上一路径和 ...