【题解】洛谷P3952 [NOIP2017TG] 时间复杂度(模拟)
题目来源:洛谷P3952
思路
纯模拟没啥可说的了
果然好复杂
参考了你谷一个40行代码
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int T,tot,num,Max,stand,now,k,n,cnt;
int member[],what[];
bool vis[];
//tot是有几个句子,stand是题目给的复杂度是多少
//now是当前在几重循环,vis[]是判断变量是否使用过
//member[]是存下每个循环的变量,tot是当前复杂度是多少(与now不同)
//k是判断下面程序是否进行,what[]是存下哪几个循环加了复杂度
//m是当前最大复杂度,n是存下k=1时的循环数
//T是数据组数
string a,b;//循环使用
int main()
{
cin>>T;
while(T--)
{
Max=stand=tot=num=now=k=n=cnt=;
memset(vis,,sizeof(vis));
memset(what,,sizeof(what));
do
{
a=b;//记录一共有几行
cin>>b;
}
while(b[]!='O');//当读入到O时停止一次
for(int i=;i<a.length();i++) cnt=cnt*+a[i]-'';//计算有几行
for(int i=;i<b.length()-;i++) stand=stand*+b[i]-'';//计算是n的几次方 如果是O(1)不影响 存成0
while(cnt--)
{
cin>>a;//输入第一个字符
if(a[]=='F')
{
now++;//循环次数增加
cin>>a;//输入变量
if(vis[a[]-]) now=-;//如果此变量已经用过 说明语法错误
else
{
vis[a[]-]=;
member[now]=a[]-;//记录在此次循环用了这个变量
}
cin>>a>>b;//输入变量后面的两个数
if((a[]!='n')&&(b[]=='n')&&(!k))//如果前面是数字后面是n 且可以运行的话
{
tot++;//可行循环+1
what[now]=;//此循环有计算
}
else if(((a.length()==b.length()&&a>b)||(a.length()>b.length())||(a[]=='n'&&b[]!='n'))&&(!k))
{
//如果a>b(n 4,45 12,24 9) 而且可以运行 那么标记下面的都不能运行 记下当前循环
//像5 8,76 78, n n 之类的不影响,不需要处理
k=;
n=now;
}
}
else//跳出循环
{
Max=max(Max,tot);//计算最大的循环次数
vis[member[now]]=;//此变量被删去
if(what[now]==)//如果此循环内增加了复杂度
{
what[now]=;//清空标记
tot--;//当前复杂度还原
}
now--;//总循环还原
if(n>&&now<n)//如果此时跳出了被n标记的循环 即不进行的循环 就把标记清楚 接下来的循环可以进行
{
k=;
n=;
}
}
if(now==-)//如果e<0(变量用过或者E过多),那么输出ERR,跳出循环
{
cout<<"ERR"<<endl;
break;
}
}
if(now>) cout<<"ERR"<<endl;//如果e>0(F过量),那么输出ERR,跳出循环
if(now==&&stand==Max) cout<<"Yes"<<endl;//如果F,E相同而且最大复杂度等于题目给的复杂度,输出Yes
if(now==&&stand!=Max) cout<<"No"<<endl;//如果F,E相同而且最大复杂度不等于题目给的复杂度,输出No
}
}
【题解】洛谷P3952 [NOIP2017TG] 时间复杂度(模拟)的更多相关文章
- 【题解】洛谷P3953 [NOIP2017TG] 逛公园(记忆化搜索+SPFA)
题目来源:洛谷P3953 思路 先用SPFA求一遍最短路 在求最短路的同时可以把所有点到终点的最短路求出来 dis数组 注意要反向SPFA 因为从起点开始可能会走到一些奇怪的路上导致时间负责度增加 ...
- 【题解】洛谷P3959 [NOIP2017TG] 宝藏(状压DP+DFS)
洛谷P3959:https://www.luogu.org/problemnew/show/P3959 前言 NOIP2017时还很弱(现在也很弱 看出来是DP 但是并不会状压DP 现在看来思路并不复 ...
- 题解 洛谷 P3396 【哈希冲突】(根号分治)
根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...
- 题解-洛谷P5410 【模板】扩展 KMP(Z 函数)
题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 L ...
- 题解-洛谷P4229 某位歌姬的故事
题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \( ...
- 题解-洛谷P4724 【模板】三维凸包
洛谷P4724 [模板]三维凸包 给出空间中 \(n\) 个点 \(p_i\),求凸包表面积. 数据范围:\(1\le n\le 2000\). 这篇题解因为是世界上最逊的人写的,所以也会有求凸包体积 ...
- 题解-洛谷P4859 已经没有什么好害怕的了
洛谷P4859 已经没有什么好害怕的了 给定 \(n\) 和 \(k\),\(n\) 个糖果能量 \(a_i\) 和 \(n\) 个药片能量 \(b_i\),每个 \(a_i\) 和 \(b_i\) ...
- 题解 洛谷 P2010 【回文日期】
By:Soroak 洛谷博客 知识点:模拟+暴力枚举 思路:题目中有提到闰年然后很多人就认为,闰年是需要判断的其实,含有2月29号的回文串,前四位是一个闰年那么我们就可以直接进行暴力枚举 一些小细节: ...
- 题解 洛谷P5018【对称二叉树】(noip2018T4)
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...
随机推荐
- JS加法相关
1:首先JS是一种弱语言,但是同类型可以自己相加减 例如“a”+”b” 可以自动组成ab : 1+ 2 自动变成3 var data = 2; var currentPage = data; //2 ...
- The Willpower Instinct(自控力,意志力)
下面是我这几天在读斯坦福大学麦格尼格尔教授的<自控力>这本书的过程中摘抄的部分经典句子,发人深思!有助于帮助我们更好的了解自己. 00 导言:欢迎进入意志力入门 意志力:控制自己的注意力. ...
- ES6入门——正则的扩展
1.RegExp构造函数 在ES5中,RegExp构造函数的参数有两种情况.第一种情况是参数是字符串,这时第二个参数表示正则表达式的修饰符:第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表 ...
- 面向对象之property
property功能 以调用数据属性的方式(不用加括号)调用方法 方法定义成数据属性(方法本应该是动词) # 定义property之前 class People: def __init__(self, ...
- Dapper批量添加
Public void Add() { List<PPQuery> lists = GetDataByFile(tempFilePath); private static readonl ...
- python 案例一(电话铺)
经过自己努力,做了一个简单的电话铺的录入和查询小程序,比较简单,喜欢的朋友可以练练手. 题目: 创建你自己的命令行 地址簿 程序.在这个程序中,你可以添加.修改.删除和搜索你的联系人(朋友.家人和同事 ...
- git rebase --onto详解
https://blog.pivotal.io/labs/labs/git-rebase-onto http://www.cnblogs.com/rickyk/p/3848768.html
- 使用DIDatepicker
使用DIDatepicker https://github.com/noxt/DIDatepicker 效果: #import "DIViewController.h" #impo ...
- C# 操作Excel 格式
数字(Range.NumberFormatlocal 属性)常规:Range.NumberFormatlocal = "G/通用格式"数值:Range.NumberFormatlo ...
- easyui学习笔记5—panel加载其他的页面
上一篇中我们看到了panel的基本实现,没有什么难度,最重要的是data-options和class两个标签属性的定义.这里我们将看一下在panel中如何加载其他的页面. 1.先看看引用的资源文件和h ...