zoukankan      html  css  js  c++  java
  • NOIP2017 时间复杂度

    很久以前就写了这题,又想起来这题练码力,重新写一下,但是挂了很多次,加起来写加调用了快3h,考场上我已经死翘翘了,第一份代码50,真是菜啊。这题其实就是一个模拟,不管用栈模拟还是用递归写都可以,我感觉递归更好操作一些,写了递归。思路其实很简单,代码挺多细节。数字的读入参考快读。

    #include<iostream>
    #include<cstring>
    #include<map>
    #include<cstdio>
    using namespace std;
    const int N=1e4+5;
    char c[N];
    map<char,int> id;
    int flag,tot,n;
    int work(int x);
    struct node{
    	int x,y,pd;
    };
    node solve(int x,int s1,int s2){
    	int w=work(x-1),dono,ans=0;if(s1==-1&&s2==-1) dono=0;
    	else if(s1==-1) dono=1;
    	else if(s2==-1) ans++;
    	else if(s1<=s2) dono=0;
    	else if(s1>s2) dono=1;
    	node t;t.x=w;t.y=w;t.pd=ans;if(dono==1) t.y=0;
    	return t;
    }
    int work(int x){
    	if(tot==24){
    		int x=1;
    	}
    	if(tot==n+1){flag=1;return -1;}
    	tot++;int s1=0,s2=0,all=0,now,ans=0;
    	if(n==x){
    		while(tot!=n+1){
    			int t=work(x-1);if(t==-1) flag=1;
    			ans=max(ans,t);
    		}return ans;
    	}
    	char pd,s;cin>>pd;if(pd=='E') return -1;cin>>s;
    	if(id[s]) flag=1;else id[s]=1;
    	if(pd=='F'){
    		char c=getchar();for(;(c>'9'||c<'0')&&c!='n';c=getchar());
    		if(c=='n') s1=-1;else while(c>='0'&&c<='9') all=all*10+c-'0',c=getchar();
    		if(!s1)s1=all;all=0;
    		c=getchar();for(;(c>'9'||c<'0')&&c!='n';c=getchar());
    		if(c=='n') s2=-1;else while(c>='0'&&c<='9') all=all*10+c-'0',c=getchar();
    		if(!s2)s2=all;all=0;
    		
    		node w=solve(x,s1,s2);now=w.y;int xianzai=w.pd;
    		
    		while(w.x>=0){w=solve(x,s1,s2);now=max(now,w.y);}
    		if(w.x==-1){id[s]=0;if(now==-1) return 0+xianzai;return now+xianzai;}
    	}
    }
    int main(){
    	int T;scanf("%d",&T);
    	while(T--){
    		id.clear();flag=0;tot=0;
    		scanf("%d",&n);scanf("%s",c);
    		int fazadu=1;if(c[2]=='1') fazadu=0;else{
    			int i=4,all=0;while(c[i]>='0'&&c[i]<='9') all=all*10+c[i]-'0',i++;
    			fazadu=all;
    		}int t=work(n);
    		if(flag) printf("ERR
    ");
    		else if(t==fazadu) printf("Yes
    ");
    		else printf("No
    ");
    	}
    }
    
  • 相关阅读:
    二项分布和多项分布
    TF-IDF学习笔记(二)
    TF-IDF学习笔记(一)
    jieba中文分词
    爬虫利器3:Xpath语法与lxml库
    Python爬虫利器1:Requests库的用法
    Python爬虫实战一之爬取糗事百科段子
    Python中的逻辑运算符
    Python:闭包函数与装饰器
    Python:函数名称空间与作用域:
  • 原文地址:https://www.cnblogs.com/BLUE-EYE/p/9574389.html
Copyright © 2011-2022 走看看