自认为是少有的复杂的代码

这题思想很简单,就是大模拟

对于for循环,一行读入4个字符串,然后分类讨论:

①:如果是一个正常的O(n),那么累计n的指数加1

②:如果是一个常数级别的,那么继续循环,但是不累计指数

③:如果这个循环是从n到常数,或大常数到小常数,那么这个循环及它内部的循环都不进,打好标记不要累计

④:至于如何防止变量的重复使用:将用过的变量放进栈里并打上标记,循环结束时出栈清标记即可

⑤:还要注意一些小细节:循环层数只计最深的一层,所以我们用一个累计变量cnt,每次结束循环考虑循环的情况:如果这个循环被累计了,cnt--,否则cnt不变,所以我们还要开一个栈,记录每个循环的情况(与存变量的栈同步使用即可)

剩下就好办了:

#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
using namespace std;
char s[];
char s1[],s2[];
char tt[];
bool used[];
int n;
stack <char> Q;
stack <int> M;
int main()
{
scanf("%d",&n);
while(n--)
{
int l;
scanf("%d",&l);
scanf("%s",tt);
int flag=;
int flag0=;
int flag2=;
int cnt=,maxcnt=;
memset(used,,sizeof(used));
while(!M.empty())
{
M.pop();
Q.pop();
}
for(int i=;i<=l;i++)
{
scanf("%s",s);
if(flag0)
{
if(s[]=='F')
{
scanf("%s",s);
scanf("%s",s);
scanf("%s",s);
}
continue;
}
if(s[]=='E')
{
if(!flag)
{
flag0=;
continue;
}else
{
char c=Q.top();
used[c]=;
Q.pop();
flag--;
int y=M.top();
if(y==)
{
cnt--;
}else if(y==)
{
flag2=;
}
M.pop();
}
}else
{
scanf("%s",s);
if(used[s[]])
{
flag=;
scanf("%s",s);
scanf("%s",s);
continue;
}
used[s[]]=;
Q.push(s[]);
scanf("%s",s1);
scanf("%s",s2);
flag++;
if(s1[]-''<=&&s2[]-''<=&&s1[]-''>=&&s2[]-''>=)
{
int j=;
int x=;
while(s1[j]-''<=&&s1[j]-''>=)
{
x=x*+s1[j]-'';
j++;
}
int y=;
j=;
while(s2[j]-''<=&&s2[j]-''>=)
{
y=y*+s2[j]-'';
j++;
}
if(x>y)
{
flag2=;
M.push();
}else
{
M.push();
}
continue;
}else if(s2[]-''<=&&s2[]-''>=)
{
M.push();
flag2=;
continue;
}else
{
if(s2[]=='n'&&s1[]=='n')
{
M.push();
continue;
}
if(!flag2)
{
cnt++;
M.push();
}else
{
M.push();
}
maxcnt=max(maxcnt,cnt);
}
}
}
if(flag)
{
flag0=;
}
if(flag0)
{
printf("ERR\n");
continue;
}else if(maxcnt==&&tt[]=='')
{
printf("Yes\n");
continue;
}else
{
int j=;
int x=;
while(tt[j]-''<=&&tt[j]-''>=)
{
x=x*+tt[j]-'';
j++;
}
if(x==maxcnt)
{
printf("Yes\n");
continue;
}
printf("No\n");
continue;
}
}
return ;
}

noip 2017 时间复杂度的更多相关文章

  1. NOIP 2017 时间复杂度 (模拟)

    题目大意:略 傻了吧唧的我wa了好几次 我的模拟功底真的不咋地 linux下用gets会报错,我用的fgets #include <string> #include "stdio ...

  2. 「NOIP 2017」列队

    题目大意:给定一个 $n times m$ 的方阵,初始时第 $i$ 行第 $j$ 列的人的编号为 $(i-1) times m + j$,$q$ 次给出 $x,y$,让第 $x$ 行 $y$ 列的人 ...

  3. NOIP 2017 解题报告

    ---恢复内容开始--- NOIP 2017 的题真的很难啊,怪不得当年我这个萌新爆零了(当然现在也是萌新)越学越觉得自己什么都不会. 想要成为强者要把这些好题都弄懂弄透 至少现在6道题我都比较陌生 ...

  4. NOIP 2017 列队 - Splay - 树状数组

    题目传送门 传送点I 传送点II 题目大意 (家喻户晓的题目应该不需要大意) (我之前咋把NOIP 2017打成了NOIP 2018,好绝望) Solution 1 Splay 每行一颗Splay,没 ...

  5. 【游记】NOIP 2017

    时间:2017.11.11~2017.11.12 地点:广东省广州市第六中学 Day1 T1:看到题目,心想这种题目也能放在T1? 这个结论我之前遇到过至少3次,自己也简单证明过.初见是NOIP200 ...

  6. NOIP 2017 小凯的疑惑

    # NOIP 2017 小凯的疑惑 思路 a,b 互质 求最大不能表示出来的数k 则k与 a,b 互质 这里有一个结论:(网上有证明)不过我是打表找的规律 若 x,y(设x<y) 互质 则 : ...

  7. 历年真题 未完成(Noip 2008 - Noip 2017)

    Noip 2008 :全部 Noip 2009 :全部 Noip 2010 :AK Noip 2011 :AK Noip 2012 : Vigenère 密码,国王游戏,开车旅行 Noip 2013 ...

  8. 洛谷 P3951 NOIP 2017 小凯的疑惑

    洛谷 P3951 NOIP 2017 小凯的疑惑 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付 ...

  9. NOIP 2017 提高组 day1t2 时间复杂度

    P3952 时间复杂度 标签 NOIp提高组 2017 时空限制 1000ms / 128MB 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂 ...

随机推荐

  1. Swagger介绍-一套流行的API框架

    简介 号称:世界最流行的API框架 官网:http://swagger.io/ 解决什么问题:在前后台分离的开发模式中,减小接口定义沟通成本,方便开发过程中测试,自动生成接口文档. 实例代码位置:ht ...

  2. Nginx 403 forbidden多种原因及故障模拟重现

    访问Nginx出现状态码为403 forbidden原因及故障模拟 1) nginx配置文件里不配置默认首页参数或者首页文件在站点目录下没有 1 index index.php index.html  ...

  3. python---tornado钩子预留解析

    在tornado.web.RequestHandler类中的初始构造方法中: class RequestHandler(object): """Base class fo ...

  4. ASP.Net WebAPI中添加helppage帮助页面

    一.自动创建带帮助的WebAPI 1.首先创建项目的时候选择WebAPI,如下图所示,生成的项目会自动生成帮助文档. 2.设置调用XML文档的代码 3.设置项目注释XML文档生成目录,项目——属性—— ...

  5. Python 爬虫: 抓取花瓣网图片

    接触Python也好长时间了,一直没什么机会使用,没有机会那就自己创造机会!呐,就先从爬虫开始吧,抓点美女图片下来. 废话不多说了,讲讲我是怎么做的. 1. 分析网站 想要下载图片,只要知道图片的地址 ...

  6. BigDecimal最基础用法【转】

    BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...

  7. 用贪心算法近似求解 Loading Balance 问题(作业调度的负载均衡)

    一,Loading Balance 问题描述:有 m 台相同的机器及 n 个作业,其中 m={M(1),M(2),……M(m)}.n = {J(1),J(2),……J(n)}.每个作业都有一个处理时间 ...

  8. Java EE之Hibernate异常总结【3】Disabling contextual LOB creation as createClob() method threw error java.lang.reflect.InvocationTargetException

    参考文献:https://stackoverflow.com/questions/4588755/disabling-contextual-lob-creation-as-createclob-met ...

  9. Fragment中onCreateView()和onActivityCreated():静态/动态View

    在编写Fragment时,在onCreateView()方法中启动了一个初始化自定义View的方法 initView(),但是调试时就崩溃,打印日志发现是这里出了问题,就将这个方法放到了onActiv ...

  10. shiroWeb项目-登陆与退出实现(九)

    原理 使用FormAuthenticationFilter过虑器实现 ,原理如下: 将用户没有认证时,请求loginurl进行认证,用户身份和用户密码提交数据到loginurl FormAuthent ...