zoukankan      html  css  js  c++  java
  • [noip2017]时间复杂度

    [传送门](https://www.luogu.org/problemnew/show/P3952)

    模拟题,用栈来存循环

    开一个桶存变量有没有出现过,退栈时清除,然后愉快的算答案就行了

    note: 数据里有$for:~i=n ~ to ~n $的东西,要特判掉。。。

    还有就是如果循环没进去,后面的都不作数,这个我一开始没注意。。

    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 300
    char s[maxn];
    int T,n,x,sta[maxn],top,tot,hs[maxn],hs_sta[maxn];
    int main(){
        scanf("%d",&T);
        while(T--){
    		memset(hs,0,sizeof hs);
    		scanf("%d",&n);x=0;top=0;
    		char ch=getchar();int flag=0;
    		while(ch!='
    '){
    			if(ch=='n') flag=1;
    			ch=getchar();
    			if(isdigit(ch)) x=x*10+ch-'0';
    		}
    		if(!flag) x=0;
    		int ERR=0,ans=0;
    		for(int l=1;l<=n;l++){
    			memset(s,0,sizeof s);
    			int err=0;tot=0;s[0]='a';
    			while(s[tot]!='
    ')s[++tot]=getchar();
    			if(ERR) continue;
    			int a1=0,a2=0,isn=0;
    			for(int i=1;i<=tot;i++){
    				if(isdigit(s[i])&&!err){
    					while(isdigit(s[i])) a1=a1*10+s[i]-'0',i++;
    					err=1;
    				}
    				if(isdigit(s[i])&&err==1){
    					while(isdigit(s[i])) a2=a2*10+s[i]-'0',i++;
    				}
    				if(s[i]=='n'){
    					if(err==1) isn=2;
    					else isn=1;
    				}
    			}
    			if(s[5]=='n'&&s[7]=='n') {sta[++top]=0,hs_sta[top]=s[3];continue;}
    			if(a2<a1&&isn==0) {sta[++top]=-1,hs_sta[top]=s[3];continue;}
    			if(isn==1){sta[++top]=-1;hs_sta[top]=s[3];continue;}
    			if(isn==0&&s[1]=='F') sta[++top]=0,hs_sta[top]=s[3];
    			if(isn==2) sta[++top]=1,hs_sta[top]=s[3];
    			int res=0;for(int i=1;i<=top;i++) {if(sta[i]==-1) break;res+=sta[i];}ans=max(ans,res);
    			if(s[1]=='E') {hs[hs_sta[top]]=0;top--;continue;}
    			if(hs[(int)s[3]]) {puts("ERR");ERR=1;}
    			hs[(int)s[3]]=1;
    		}
    		if(top!=0&&!ERR) {puts("ERR");ERR=1;continue;}
    		if(ERR) continue;
    		if(ans==x) puts("Yes");
    		else puts("No");
        }
        return 0;
    }
    
    
  • 相关阅读:
    Java的错误类型
    交换两个变量的值
    变量的自增、自减、自乘、自除运算
    通过Scanner从控制台获取数据
    通过args数组获取数据
    int类型与char类型的转换
    大类型向小类型转换
    小类型向大类型转换
    6 高级2 自连接 视图
    5 高级 关系 连接
  • 原文地址:https://www.cnblogs.com/hbyer/p/9637347.html
Copyright © 2011-2022 走看看