[NOIp2017] luogu P3952 时间复杂度
跪着看评测很优秀。
题目描述
给你若干个程序,这些程序只有 For 循环,求这些程序的时间复杂度。
Solution
大模拟。讲下细节。
flag[i]flag[i]flag[i] 表示第 iii 位有没有对复杂度产生贡献,而且只有 F 开头的语句才会计算。
ed[i]ed[i]ed[i] 表示第 iii 位配套的 E 的位置(第 iii 位必须是 F)。
注意判 CE 的时候,
F x 2 1
F x 1 2
E
E
这个程序也要判 CE。
最后贴上代码
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define max(x,y) ((x)>(y)?(x):(y))
#define ERR() {puts("ERR");return;}
int T;
int L,c;
char R[20];
int ans=0,now,h,cnt,cur;
char str[110][20];
int flag[110];
int x,y;
int st[110],ed[110];
bool bk[130];
int get(char*s,int t){
int l=strlen(s);
for(int i=0;i<l;++i){
if(s[i]==' ') --t;
if(!t){
if(s[i+1]=='n') return 101;
now=i;cnt=0;
do{
++now;
cnt=cnt*10+s[now]-'0';
}while(s[now+1]>='0'&&s[now+1]<='9');
return cnt;
}
}
}
int count(int l,int r){
if(ed[l]==r){
if(flag[l]==1) return count(l+1,r-1)+1;
else if(!flag[l]) return count(l+1,r-1);
return 0;
}
int sum=0;
for(int i=l;i<=r;i=ed[i]+1)
sum=max(sum,count(i,ed[i]));
return sum;
}
void work(){
ans=0;
if(R[3]=='1') ans=0;
else{
now=4;
do{
++now;
ans=ans*10+R[now]-'0';
}while(R[now+1]>='0'&&R[now+1]<='9');
}
for(int i=1;i<=L;++i){
x=get(str[i],2);y=get(str[i],3);
if(y==101&&x!=101&&str[i][0]=='F') flag[i]=1;
else if(x>y) flag[i]=-1;
else flag[i]=0;
}
memset(bk,0,sizeof(bk));
memset(st,0,sizeof(st));h=0;
memset(ed,0,sizeof(ed));
for(int i=1;i<=L;++i){
if(str[i][0]=='F'){
++h;
if(bk[str[i][2]]) {ERR();}
else bk[str[i][2]]=1;
st[h]=i;
}
else{
ed[st[h]]=i;
bk[str[st[h]][2]]=0;
--h;
}
if(h<0) ERR() ;
}
if(h) ERR();
puts((count(1,L)==ans)?"Yes":"No");
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%s",&L,R+1);
getchar();
for(int i=1;i<=L;++i)
gets(str[i]);
work();
}
}
[NOIp2017] luogu P3952 时间复杂度的更多相关文章
- luogu P3952 时间复杂度 模拟
题目链接 luogu P3952 时间复杂度 题解 直接模拟即可 注意不要直接return 我真是naive ...... 代码 #include<map> #include<sta ...
- 【luogu P3952 时间复杂度】 题解
对于2017 D1 T2 这道题 实实在在是个码力题,非常考验耐心. 其实大体的思路并不是非常难想出来,但是要注意的小细节比较多. 题目链接:https://www.luogu.org/problem ...
- [LUOGU] P3952 时间复杂度
其实,也没那么难写 这种模拟题,仔细分析一下输入格式,分析可能的情况,把思路写在纸上,逐步求精,注意代码实现 主要思路就是算一个时间复杂度,和给出的复杂度比较,这就先设计一个函数把给出的复杂度由字符串 ...
- P3952 时间复杂度
P3952 时间复杂度 题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机 ...
- 洛谷 P3952 时间复杂度 解题报告
P3952 时间复杂度 题目描述 小明正在学习一种新的编程语言A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会 ...
- 洛谷 - P3952 - 时间复杂度 - 模拟
https://www.luogu.org/problemnew/show/P3952 这个模拟,注意每次进入循环的时候把新状态全部入栈,退出循环的时候就退栈. 第一次就错在发现ERR退出太及时,把剩 ...
- 洛谷P3952 时间复杂度【字符串】【模拟】
题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序 ...
- LOJ P3952 时间复杂度 noip 暴力 模拟
https://www.luogu.org/problemnew/show/P3952 模拟,日常认识到自己zz. #include<iostream> #include<cstdi ...
- luogu 3952 时间复杂度
noip2017 D1T2 时间复杂度 某zz选手考场上写了1.5h 考完之后发现自己写的是错的 但是结果A了??? 题目大意: 一种新的编程语言 A++ 给出一个程序只有循环语句 并给出这个程序的时 ...
随机推荐
- 关于Elasticsearch文档的描述以及如何操作文档的详细总结
文档 什么是文档 在大多数应用中,多数实体或对象可以被序列化为包含键值对的 JSON 对象. 一个 键 可以是一个字段或字段的名称,一个 值 可以是一个字符串,一个数字,一个布尔值, 另一个对象,一些 ...
- Linux 笔记 - 第十二章 Shell 脚本
博客地址:http://www.moonxy.com 一.前言 常见的编程语言分为两类:一类是编译型语言,如:C.C++ 和 Java等,它们远行前要经过编译器的编译.另一类是解释型语言,不需要编译, ...
- python+selenium六:隐式等待
python+selenium六:隐式等待 # 隐式等待 # 全局生效,只写一次即可(仅当前页面)# 若有页面切换,需sleep等待新页面出现后,再使用此方法 # 如:在35秒内,等待操作完成,完 ...
- Nginx 的三大功能
1.HTTP服务器 Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 2.反向代理服务器 Nginx也是反向代理服务器. 说反向代理之前先说一 ...
- Spring boot 自定义banner的在线制作
目前工作不是很忙,利用闲暇的时间,在给自己不断地充电,提升自己的技术实力. 目前在做一个基于Spring Boot2.x+webmagic+quartz的爬虫项目[hotDog]https://git ...
- 理解 Spring 注解编程模型
理解 Spring 注解编程模型 Spring 中有一个概念叫「元注解」(Meta-Annotation),通过元注解,实现注解的「派生性」,官方的说法是「Annotation Hierarchy」. ...
- [Advanced Python] 15 - "Metaclass": ORM
From: 使用元类 动态创建类 与静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 一 .type()动态创建 我们说class的定义是运行时动态创建的: 而创建cl ...
- node学习之路
现阶段开始学习使用node开发一个个人博客系统,nodejs 基于V8引擎,是一个让 JavaScript 运行在服务端的开发平台,功能强大 ,Node.js 可以作为服务器向用户提供服务,它跳过了 ...
- Centos修改yum源为国内阿里源
以下为修改Centos6.5的yum源: 1. 备份原镜像文件,便于后期恢复 [root@keepmydream ~]# mv /etc/yum.repos.d/CentOS-Base.repo /e ...
- jenkins自动化部署项目2 --插件的选择和安装
一.安装插件: 我选择的安装建议的插件,也可以自定义安装自己想要的插件,在不敢保证自己确定要用的插件是完全正确的情况下建议按推荐安装 我理解的jenkins+tomcat完成自动化部署maven项目需 ...