题目链接

题意:

给出仅表示循环结构的简化语句,指出编译错误和时间复杂度。

程序1(100pt):

字符串处理,字母数字夹杂,上$scanf$来做。注意到有复数种情况,各种空格空行要分类讨论清楚。

考虑同时查错和做复杂度,思考一下发现不行:出现不执行的循环体,查错要求进入,做复杂度要求跳过,不适合硬生生糅合在一起。

考虑先查错,再做复杂度。考虑到之后有跳过循环体的情况,查错时把同一对循环首尾做一个链接。

实现时,用栈来维护“层层深入,逐步退出”的数据关系。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define IL inline
using namespace std;
const int N=100;int L,w;bool num(char ch){return '0'<=ch&&ch<='9';}struct Txt{bool f,f1,f2;            //f:'F'   f1:x==n   f2:y==nchar ch;int x,y;}str[N+3];struct Stk{char ch;int id;}stk[N+3];bool vis['z'+3];bool mrk[N+3];int top,ans;int jmp[N+3];int main(){int T;    char ch;scanf("%d\n",&T);while(T--){scanf("%d O(%c",&L,&ch);if(ch=='1')w=0;else scanf("^%d",&w);scanf(")\n");for(int i=1;i<=L;i++){scanf("%c",&ch);if(ch=='E'){str[i].f=false;scanf("\n");continue;}str[i].f=true;scanf(" %c %c",&str[i].ch,&ch);if(ch=='n'){str[i].f1=true;scanf("%c",&ch);}else {str[i].x=ch-'0';str[i].f1=false;scanf("%c",&ch);while(num(ch)){str[i].x=str[i].x*10+ch-'0';scanf("%c",&ch);}}scanf("%c",&ch);if(ch=='n'){str[i].f2=true;scanf("\n");}else {str[i].y=ch-'0';str[i].f2=false;scanf("%c",&ch);while(num(ch)){str[i].y=str[i].y*10+ch-'0';scanf("%c",&ch);}}}bool flag=false;    top=0;memset(vis,0,sizeof vis);for(int i=1;i<=L;i++)if(str[i].f){if(vis[(int)str[i].ch]){flag=true;break;}vis[(int)str[i].ch]=true;top++;stk[top].ch=str[i].ch;stk[top].id=i;}else {if(top==0){flag=true;break;}vis[(int)str[stk[top].id].ch]=false;jmp[stk[top].id]=i;jmp[i]=stk[top].id;top--;}if(!flag&&top>0)flag=true;if(flag){printf("ERR\n");continue;}top=ans=0;memset(mrk,0,sizeof mrk);for(int i=1;i<=L;i++)if(str[i].f){if(((!str[i].f1)&&(!str[i].f2)&&(str[i].x>str[i].y))||((str[i].f1)&&(!str[i].f2))){i=jmp[i];continue;}if((!str[i].f1)&&str[i].f2){top++;mrk[i]=true;ans=max(ans,top);}}elseif(mrk[jmp[i]])top--;if(ans==w)printf("Yes\n");else printf("No\n");}return 0;}

小结:

$scanf$处理字符串熟练度$++$!

一个真实的故事:当年考联赛同队有人把$ERR$写成了$Err$结果怒爆$0$。

转载于:https://www.cnblogs.com/Hansue/p/11018758.html

NOIP2017TG D1T2 时间复杂度相关推荐

  1. [NOIp2017] 时间复杂度

    NOIp 2017 D1T2 时间复杂度 洛谷 P3952 传送门 稍微压了压行,写到了60行&&1.3kb以内,感觉自己的写法还是很清晰很优秀的. 少量的特判,比别的代码简洁多了. ...

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

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

  3. [SinGuLaRiTy] NOIP2017 提高组

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

  4. NOIP2017时间复杂度(提高D1T2)

    标签:模拟 题目 题目传送门 题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是 ...

  5. 1007: 小Y的问题【TYVJ2016国庆赛D1T2】

    Description有个孩子叫小Y,一天,小Y拿到了一个包含n个点和n-1条边的无向连通图,图中的点用1~n的整数编号.小Y突发奇想,想要数出图中有多少个"Y字形".一个&quo ...

  6. 数据结构(02)— 时间复杂度与空间复杂度转换

    1. 时间复杂度转化为空间复杂度 常用的降低时间复杂度的方法有递归.二分法.排序算法.动态规划等,降低空间复杂度的核心思路就是,能用低复杂度的数据结构能解决问题,就千万不要用高复杂度的数据结构. ​ ...

  7. 【算法基础】时间复杂度:大O阶方法

    前言: 数据结构与算法中,数据结构就像一个厨房(有食材,有餐具,各种炊具),而算法就像厨师脑海中的菜谱,只有好的食材(数据),整洁有序的厨房(数据组织),简洁明了的菜谱(算法),厨师才能做出美味(程序 ...

  8. P3952 NOIP2017 时间复杂度

    写了两三个小时,麻烦倒是不麻烦,要考虑清楚,想全了 只过了样例提交是不是傻,要自己造数据 数据不大可以用STL 建议自己刚一下,不看代码 #include <iostream> #incl ...

  9. 20140725 快速排序时间复杂度 sTL入门

    1.快速排序的时间复杂度(平均时间复杂度为) 数组本身就有序时,效果很差为O(n^2) 2.STl入门 (1) C++内联函数(inline)和C中宏(#define)区别 内联函数有类型检查,宏定义 ...

最新文章

  1. 2019年春季学期第四周作业Compile Summarize
  2. 一个简单的记事本程序
  3. java笔记(3):String(2)
  4. 整车物流系统源代码_整车物流AGV智能搬运机器人一阶段实地测试顺利完成
  5. .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新
  6. 最可怕的企业“内卷化”,是走入以下10个误区而不自知
  7. Struts xml中Action的method与路径的三种匹配方法
  8. 用Java实现向Cassandra数据库中插入和查询数据
  9. 使用CASEWHEN批量拼凑Update语句
  10. QNX分布式实时操作系统初步认识-QNX系统了解认识
  11. jordan标准 相似_矩阵的Jordan标准形及其相似变换矩阵.pdf
  12. YYC松鼠视频短信对接教程
  13. 同城服务小程序开发的好处和功能方案介绍
  14. mysql表分区join_​实战:Flink 1.12 维表 Join Hive 最新分区功能体验
  15. cmd结束指定端口号的进程
  16. Apollo 3.0代码浅析(一)
  17. 江西伟人系列第三篇:唐宋八大家(欧阳修)
  18. 4.21版本工程以后材质里CustomNode添加.usf文件失败解决办法
  19. linux进程q是什么意思,Linux zombie进程
  20. HPUNIX环境常用查看硬件设备信息命令小结

热门文章

  1. oracle调用存储过程和函数返回结果集
  2. linux下的shell中if的-e,-d,-f是什么意思
  3. ssl协议及开源实现openssl
  4. hadoop环境搭建遇到的问题:-bash: jps: command not found
  5. 【转载】 Searching过程粗略梳理
  6. 利用 livy 远程提交 spark作业
  7. Elasticsearch Mapping 详解
  8. 高性能队列——Disruptor
  9. vue项目中阻止浏览器返回上一页
  10. Python注释缩进不得当导致IndentationError: unexpected indent