zoukankan      html  css  js  c++  java
  • 【比赛】NOIP2017 时间复杂度

    恶心的模拟题,考场上犯了一堆错误,多组数据清空没清完、数组开小。。。民间都是50分,结果CCF90。。

    考完后随便改改就过了,还好只少了10分,如果真的是50,我估计会疯掉。

    因为考场的时候没写好,所以最终的代码也很难看。

      1 #include<bits/stdc++.h>
      2 using namespace std;
      3 int T,n,stk[100],p[100],fnum,stack_num,sck[110],sck_num;
      4 char s[20],ch[2],res[100];
      5 inline void init()
      6 {
      7     memset(p,0,sizeof(p));
      8     memset(res,0,sizeof(res));
      9     memset(sck,0,sizeof(sck));
     10     memset(stk,0,sizeof(stk));
     11     sck_num=0;
     12     stack_num=0;
     13     fnum=0;
     14 }
     15 inline void Dealwith()
     16 {
     17     init();
     18     int ans=0,mark=0,nxt=1,nnum=0,las=0,done=0;
     19     for(register int i=1;i<=n;++i)
     20     {
     21         scanf("%s",ch);
     22         if(ch[0]=='F')
     23         {
     24             if(done)
     25             {
     26                 scanf("%s",ch);
     27                 scanf("%s",ch);
     28                 scanf("%s",ch);
     29                 continue;
     30             }
     31             fnum++;
     32             scanf("%s",ch);
     33             if(p[ch[0]-'a'])
     34             {
     35                 printf("ERR
    ");
     36                 done=1;
     37             }
     38             p[ch[0]-'a']=1;
     39             stk[++stack_num]=ch[0]-'a';
     40             int fl1,num1=0,fl2,num2=0;
     41 
     42             scanf("%s",ch);
     43             if(ch[0]>='0'&&ch[0]<='9')
     44             {
     45                 fl1=0;
     46                 for(register int j=0;j<strlen(ch);++j)num1=(num1<<3)+(num1<<1)+(ch[j]^'0');
     47             }
     48             else fl1=1;
     49 
     50             scanf("%s",ch);    
     51             if(ch[0]>='0'&&ch[0]<='9')
     52             {
     53                 fl2=0;
     54                 for(register int j=0;j<strlen(ch);++j)num2=(num2<<3)+(num2<<1)+(ch[j]^'0');
     55             }
     56             else fl2=1;
     57 
     58             if(fnum!=nxt)continue;
     59 
     60             if(fl1==1&&fl2==0)nxt=fnum;
     61             else if(fl1==0&&fl2==0)
     62             {
     63                 if(num1>num2)nxt=fnum;
     64                 else nxt=fnum+1,sck[++sck_num]=1;
     65             }
     66             else if(fl1==0&&fl2==1)
     67             {
     68                 mark=1;
     69                 nnum++;
     70                 if(ans<nnum)ans++;
     71                 nxt=fnum+1;
     72                 sck[++sck_num]=2;
     73             }
     74             else sck[++sck_num]=1,nxt=fnum+1;
     75         }
     76         else
     77         {
     78             if(done)continue;
     79             if(!fnum)
     80             {
     81                 printf("ERR
    ");
     82                 done=1;
     83             }
     84             if(done)continue;
     85             if(nxt==fnum+1)
     86             {
     87                 fnum--,nxt--;
     88                 if(sck[sck_num--]==2)nnum--;
     89             }
     90             else fnum--;
     91             p[stk[stack_num--]]=0;
     92         }
     93     }
     94     if(done)return ;
     95     if(fnum)
     96     {
     97         printf("ERR
    ");
     98         return ;
     99     }
    100     if(mark)
    101     {
    102         res[0]='O',res[1]='(',res[2]='n',res[3]='^';
    103         int respos=3,tmppos=0;
    104         char tmp[10];
    105         while(ans)tmp[++tmppos]=ans%10+'0',ans/=10;
    106         while(tmppos)res[++respos]=tmp[tmppos--];
    107         res[++respos]=')';res[++respos]='';
    108     }
    109     else res[0]='O',res[1]='(',res[2]='1',res[3]=')',res[4]='';
    110 
    111     if(!strcmp(s,res))printf("Yes
    ");
    112     else printf("No
    ");
    113 }
    114 int main()
    115 {
    116     freopen("complexity.in","r",stdin);
    117     freopen("complexity.out","w",stdout);
    118     scanf("%d",&T);
    119     while(T--)
    120     {
    121         scanf("%d",&n);scanf("%s",s);
    122         Dealwith();
    123     }
    124     return 0;
    125 }
    NOIP2017 时间复杂度
  • 相关阅读:
    合肥程序员欢迎进QQ群49313181同城程序员职业交流群
    新一代程序员的思考
    ThinkPHP开发系列一框架搭建
    ASP.NET MVC4+EF系列之五 架构介绍
    ASP.NET MVC4+EF系列之阶段源码一
    gcc g++ Linux下动态库_静态库 指定路径问题
    [转]accept() 产生的Socekt端口是多少?
    阿里云计算资深总监唐洪:飞天大规模分布式计算系统解析
    [转] C++中##(两个井号)和#(一个井号)用法
    deep learning 深度学习
  • 原文地址:https://www.cnblogs.com/hongyj/p/8000872.html
Copyright © 2011-2022 走看看